关于为什么 our training loss is smooth and our validation loss is that noisy (see the link) across epochs?的任何想法我们正在使用由提供的眼底照片数据集实施糖尿病视网膜病变检测的深度学习模型(二元分类) this Kaggle competition。我们使用 Keras 2.0 与 Tensorflow 后端。
由于数据集太大而无法容纳在内存中,我们正在使用fit_generator
,ImageDataGenerator
随机从培训和验证文件夹中获取图像:
# TRAIN THE MODEL
model.fit_generator(
train_generator,
steps_per_epoch= train_generator.samples // training_batch_size,
epochs=int(config['training']['epochs']),
validation_data=validation_generator,
validation_steps= validation_generator.samples // validation_batch_size,
class_weight=None)
我们的CNN架构是VGG16,在最后两个完全连接的层中丢失= 0.5,仅在第一个完全连接的层之前进行批量归一化,以及数据增强(包括水平和垂直翻转图像)。我们的训练和验证样本使用训练集平均值和标准差进行标准化。批量大小为32.我们的激活是sigmoid
,损失函数是binary_crossentropy
。 You can find our implementation in Github
它绝对与过度拟合无关,因为我们尝试使用高度正规化的模型并且行为完全相同。 是否与验证集中的抽样相关?您之前是否有过类似的问题?
谢谢!
答案 0 :(得分:0)
我会按此顺序查看:
如果以上内容均未提供更平滑的验证损失曲线,那么我的下一个假设将是这样,并且我可能需要研究模型架构