首页 > 解决方案 > 数据增强会损害准确性 Keras

问题描述

我正在尝试将深度学习与 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)

问题:

更新:这可能是 keras 本身的问题

标签: kerasdeep-learningtransfer-learningdata-augmentation

解决方案


要回答您的第一个问题:steps_per_epoch在考虑一个时期完成之前,训练生成器应该产生的批次数是多少。如果您有 600 个批量大小为 20 的训练图像,这将是每个 epoch 等 30 步。validation_steps将相同的逻辑应用于验证数据生成器,无论是在每个 epoch 结束时。

一般来说,steps_per_epoch是数据集的大小除以批量大小。


推荐阅读