这里是一个例子:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import math
import os
import numpy as np
import pandas as pd
import tensorflow as tf
from PIL import Image
from tensorflow.keras import layers
from tqdm import tqdm
batch_size = 32
img_height = 180
img_width = 180
basedir = 'archive/raw-img/'
train_ds = tf.keras.preprocessing.image_dataset_from_directory(
basedir,
validation_split=0.2,
subset='training',
seed=123,
image_size=(img_height, img_width),
batch_size=batch_size,
)
val_ds = tf.keras.preprocessing.image_dataset_from_directory(
basedir,
validation_split=0.2,
subset='validation',
seed=123,
image_size=(img_height, img_width),
batch_size=batch_size,
)
AUTOTUNE = tf.data.AUTOTUNE
train_ds = train_ds.cache().prefetch(buffer_size=AUTOTUNE)
val_ds = val_ds.cache().prefetch(buffer_size=AUTOTUNE)
model = tf.keras.Sequential([ # layers.experimental.preprocessing.RandomFlip("horizontal_and_vertical"),
# layers.experimental.preprocessing.RandomRotation(0.1),
layers.experimental.preprocessing.Rescaling(1.0 / 255,
input_shape=(img_height, img_width, 3)),
layers.Conv2D(32, 3, activation='relu'),
layers.MaxPooling2D(),
layers.Conv2D(64, 3, activation='relu'),
layers.MaxPooling2D(),
layers.Conv2D(128, 3, activation='relu'),
layers.MaxPooling2D(),
layers.Flatten(),
layers.Dense(128, activation='relu'),
layers.Dense(len(class_names), activation='softmax'),
])
model.compile(optimizer='adam',
loss=tf.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
model.fit(train_ds, validation_data=val_ds, epochs=2,
batch_size=batch_size)
(loss, acc) = model.evaluate(val_ds)
print ('Accuracy', acc)