【发布时间】:2018-04-09 11:07:17
【问题描述】:
关于为什么的任何想法our training loss is smooth and our validation loss is that noisy (see the link) across epochs?我们正在使用@987654322提供的眼底照片数据集实施糖尿病视网膜病变检测(二元分类)的深度学习模型@。我们正在使用带有 Tensorflow 后端的 Keras 2.0。
由于数据集太大而无法放入内存,我们使用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,最后两个全连接层的 dropout = 0.5,仅在第一个全连接层之前进行批量标准化,以及数据增强(包括水平和垂直翻转图像)。我们的训练和验证样本使用训练集均值和标准差进行归一化。批量大小为 32。我们的激活是sigmoid,损失函数是binary_crossentropy。 You can find our implementation in Github
这绝对与过度拟合无关,因为我们尝试使用高度正则化的模型并且行为完全相同。 是否与验证集的抽样有关?你们之前有没有遇到过类似的问题?
谢谢!!
【问题讨论】:
-
您为训练模型选择的训练/测试比率是多少?你有多少训练和测试数据?此外,当您尝试多次训练时,是否会发生这种嘈杂的验证损失?如果您提供您在此处使用的所有参数(每个时期的步数、时期等)会有所帮助
-
训练样本的数量约为 32.000,其中大约 20% 为正样本,80% 为负样本。我在 3000 个验证样本中的分布完全相同。我已经使用不同的正则化策略组合(辍学、权重衰减、批量归一化、增强等)训练了模型,但我总是得到相同的噪声验证损失。每个 epoch 的步数等于训练样本数除以批量大小(大约 100 步)。
-
你有没有发现什么有用的东西? @user2227561
标签: machine-learning deep-learning keras kaggle keras-2