В прекоде создана свёрточная сеть. Допишите код так, чтобы передать ей на обучение и валидацию датасет с фруктами.
Чтобы обучение не было слишком долгим, вызовите функцию fit() с шагом 1.
Подсказка
Функция fit() вызывается так:
model.fit(train_datagen_flow,
validation_data=val_datagen_flow,
steps_per_epoch=1,
validation_steps=1,
verbose=2, epochs=1)
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, AveragePooling2D, Flatten, Dense
datagen = ImageDataGenerator(validation_split=0.25)
train_datagen_flow = datagen.flow_from_directory(
'/datasets/fruits_small/',
target_size=(150, 150),
batch_size=16,
class_mode='sparse',
# указываем, что это загрузчик для обучающей выборки
subset='training',
seed=12345)
val_datagen_flow = datagen.flow_from_directory(
'/datasets/fruits_small/',
target_size=(150, 150),
batch_size=16,
class_mode='sparse',
# указываем, что это загрузчик для валидационной выборки
subset='validation',
seed=12345)
model = Sequential()
model.add(Conv2D(filters=6,
kernel_size=(3, 3),
activation='relu',
input_shape=(150, 150, 3)))
model.add(AveragePooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(units=12, activation='softmax'))
model.compile(loss='sparse_categorical_crossentropy',
optimizer='adam', metrics=['acc'])
model.fit(train_datagen_flow,
validation_data=val_datagen_flow,
# Чтобы обучение не было слишком долгим, указываем
# количество шагов равным 1
steps_per_epoch=1,
validation_steps=1,
verbose=2, epochs=1)