Machine learning 使用fit_发生器时Keras中的噪声验证损失

Machine learning 使用fit_发生器时Keras中的噪声验证损失,machine-learning,deep-learning,keras,kaggle,keras-2,Machine Learning,Deep Learning,Keras,Kaggle,Keras 2,关于为什么的任何想法,我们正在使用提供的眼底照片数据集实施糖尿病视网膜病变检测的深度学习模型(二元分类)。我们将Keras 2.0与Tensorflow后端一起使用 由于数据集太大,无法放入内存,我们正在使用fit_generator,使用ImageDataGenerator从培训和验证文件夹中随机采集图像: # TRAIN THE MODEL model.fit_generator( train_generator, steps_per_epoch= train_generat

关于为什么的任何想法,我们正在使用提供的眼底照片数据集实施糖尿病视网膜病变检测的深度学习模型(二元分类)。我们将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,在最后两个完全连接的层中,dropout=0.5,仅在第一个完全连接的层之前进行批量标准化,以及数据增强(包括水平和垂直翻转图像)。我们的训练和验证样本使用训练集均值和标准差进行归一化。批量大小为32。我们的激活是一个
sigmoid
,损失函数是
二进制交叉熵

这肯定与过度拟合无关,因为我们尝试了一个高度正则化的模型,其行为完全相同这与验证集中的采样有关吗?你们中有人以前有过类似的问题吗


谢谢

我会这样看:

  • 验证_生成器实现中的错误(包括步骤-是否经过所有保留用于验证的图片?)
  • 在validation_generator中,不要使用增广(原因:增广可能不好,不可学习,并且在训练中,它只通过硬编码关系(不可概括)获得好分数)
  • 将列车/val拆分更改为50/50
  • 通过自定义回调计算历元结束时的验证损失(使用相同的函数,但使用回调调用它会产生不同的结果(在某些非标准模型下更准确)

如果上述任何一项都不能提供更平滑的验证损失曲线,那么我的下一个假设是这就是它的方式,我可能需要处理模型架构

您为训练模型选择的训练/测试比率是多少?这就是你有多少培训和测试数据?此外,当您尝试几次培训时,是否会发生这种嘈杂的验证丢失?如果您提供此处使用的所有参数(每个历元的步长、历元等),则会有所帮助。训练样本数约为32.000,其中约20%为正,80%为负。我在3000个验证样本中有完全相同的分布。我使用不同的正则化策略组合(退出、权重衰减、批量标准化、增强等)训练模型,但我总是得到相同的噪声验证损失。每个历元的步数等于训练样本数除以批量大小(大约100步)。你发现有用的东西了吗@用户2227561