我在 Keras 训练了几个模型。我的训练集中有 39、592 个样本,而我的验证集中有 9、899 个样本。我使用的批量大小为 2。
当我检查我的代码时,我突然想到我的生成器可能丢失了一些数据批次。
这是我的生成器的代码:
train_datagen = ImageDataGenerator(
rescale=1. / 255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
val_datagen = ImageDataGenerator(rescale=1. / 255)
train_generator = train_datagen.flow_from_directory(
train_dir,
target_size=(224, 224)
batch_size=batch_size,
class_mode='categorical')
validation_generator = val_datagen.flow_from_directory(
val_dir,
target_size=(224, 224),
batch_size=batch_size,
class_mode='categorical')
我四处搜寻以查看生成器的行为,并找到了答案: 如果 steps_per_epoch 不适合样本数量怎么办?
我以这种方式计算了我的 steps_per_epoch 和 validation_steps:
steps_per_epoch = int(number_of_train_samples / batch_size)
val_steps = int(number_of_val_samples / batch_size)
将此链接中的代码与我自己的批量大小和样本数量一起使用,我得到了以下结果:train_generator 的“缺少最后一批”和 val_generator 的“奇怪的行为”。
恐怕我必须再次重新训练我的模型。我应该为 steps_per_epoch 和 validation_steps 选择什么值?有没有办法为这些变量使用精确值(除了将 batch_size 设置为 1 或删除一些样本)?我还有其他几个样本数量不同的模型,我认为它们都缺少一些批次。任何帮助将非常感激。
两个相关问题:
1-关于我已经训练过的模型,它们是否可靠且经过适当训练?
2- 如果我使用以下值设置这些变量会发生什么:
steps_per_epoch = np.ceil(number_of_train_samples / batch_size)
val_steps = np.ceil(number_of_val_samples / batch_size)
在训练和验证期间,我的模型会在每个 epoch 中多次看到某些图像吗?还是这是我问题的解决方案?!