我正在尝试将深度学习与 Python 第 5.3 节特征提取与数据增强适应于 resnet50(imagenet 权重)的 3 类问题。
完整代码在https://github.com/morenoh149/plantdisease
from keras import models
from keras import layers
from keras.applications.resnet50 import ResNet50
from keras import optimizers
from keras.preprocessing.image import ImageDataGenerator
input_shape = (224, 224, 3)
target_size = (224, 224)
batch_size = 20
conv_base = ResNet50(weights='imagenet', input_shape=input_shape, include_top=False)
model = models.Sequential()
model.add(conv_base)
model.add(layers.Flatten())
model.add(layers.Dense(256, activation='relu'))
model.add(layers.Dense(3, activation='softmax'))
conv_base.trainable = False
train_datagen = ImageDataGenerator(rescale=1./255)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
'input/train',
target_size=target_size,
batch_size=batch_size,
class_mode='categorical')
validation_generator = test_datagen.flow_from_directory(
'input/validation',
target_size=target_size,
batch_size=batch_size,
class_mode='categorical')
model.compile(loss='categorical_crossentropy',
optimizer=optimizers.RMSprop(lr=2e-5),
metrics=['acc'])
history = model.fit_generator(
train_generator,
steps_per_epoch=96,
epochs=30,
verbose=2,
validation_data=validation_generator,
validation_steps=48)
问题:
- 这本书没有过多介绍 ImageDataGenerator 和选择
steps_per_epoch
andvalidation_steps
。这些值应该是什么?我有 3 个班级,每个班级 1000 张图片。我已将其拆分为 60/20/20 训练/验证/测试。 - 在没有数据增强的情况下,我能够获得 60% 的验证准确度。上面我已将 ImageDataGenerator 简化为仅重新缩放。这个模型的验证准确率为 30% 为什么?
- 我需要对此脚本的数据增强版本进行哪些更改以匹配不增强的准确性?
更新:这可能是 keras 本身的问题