首页 文章

NASNet-A微调很差的验证准确性

提问于
浏览
4

我有一个大约34000个图像的数据集,分为2组:火车(30000图像)和验证(4000图像)集 . 每个图像是从视频拍摄的两个图像之间的差异的结果(每对图像之间的时间偏移约为1秒) . 视频具有静态背景,因此差异图像包含太多黑色,只有一个或两个带有颜色的小区域 . 每个差异图像都有一个标签(有一个动作或没有.. 1或0)所以这是一种二进制分类 . 简而言之,我正在使用 ImageNet 预训练的 slim 模型来对我的数据集进行微调 . 我使用5个不同的网络启动了5个单独的培训: InceptionV4, InceptionResnetV2, Resnet152, NASNet-mobile, NASNet . 我使用前4个网络 InceptionV4, InceptionResnetV2, Resnet152, NASNet-mobile 获得了非常好的结果,但使用 NASNet 并非如此 . 问题是验证集上的 Area Under the ROC curve 总是= 0.5,验证图像的logits大致具有相同的值,这真的很奇怪 . 事实上,我在第一个10000小批量使用 NASNet-mobile 获得了这种结果,但之后模型确实收敛了 . 以下是我脚本中的超参数值:

batch_size=10
weight_decay = 0.00004 
optimizer = rmsprop
rmsprop_momentum = 0.9 
rmsprop_decay = 0.9 

learning_rate_decay_type =  exponential 
learning_rate =  0.01 
learning_rate_decay_factor = 0.94 
num_epochs_per_decay = 2.0 #'Number of epochs after which learning rate

我仍然是 tensorflow 的新手,我在其他地方找不到任何相关的东西 . 这是一个非常奇怪的行为,因为我使用相同的参数和相同的输入但似乎使用 NASNet 在某处存在问题 . 我收缩了例如?最后,我知道很难在这些问题上得到答案,但我希望至少得到一些见解,以便我可以继续进行调查 .

EDIT: 以下是交叉熵和正则化损失的图:
enter image description here

enter image description here

EDIT: 正如答案中提出的,我确实将drop_path_keep_prob参数设置为1,现在模型已经收敛,我在验证集上获得了很好的准确性 . 但现在的问题是:这个参数是什么意思?它是我们应该适应我们的数据集(如学习率等)的一个参数吗?

1 回答

  • 2

    您可以做的最简单的理智检查是在单个小批量上运行微调 . 如果没有任何大问题,任何深层网络都应该能够过度使用 . 如果您发现它无法做到这一点,那么定义或您使用定义的方式肯定存在问题 .

    在你的情况下我唯一的猜测是它可能与 drop_path 实现有关 . 它微调,所以它可能值得尝试训练它禁用 .

相关问题