NASNet-A 微调验证精度不佳

我有一个包含大约34000张图片的数据集,分为两个集合:训练集(30000张图片)和验证集(4000张图片)。每张图片是视频中两张图片相减的结果(每对图片之间的时间偏移约为1秒)。视频背景是静态的,因此差分图片中包含了太多的黑色,只有少数一个或两个小的彩色区域。每张差分图片都有一个标签(是否发生了动作,用1或0表示),因此这是一种二分类问题。简而言之,我使用在ImageNet上预训练的slim模型来对我的数据集进行微调。我启动了5次独立的训练,使用了5种不同的网络:InceptionV4, InceptionResnetV2, Resnet152, NASNet-mobile, NASNet。使用前4个网络InceptionV4, InceptionResnetV2, Resnet152, NASNet-mobile取得了非常好的结果,但使用NASNet却不是这样。问题是验证集上的ROC曲线下面积总是等于0.5,并且验证图片的logits大致具有相同的值,这真是奇怪。实际上,使用NASNet-mobile时,我在前10000个小批量中得到了这种结果,但之后模型确实收敛了。以下是我脚本中超参数的值:

batch_size=10weight_decay = 0.00004 optimizer = rmsproprmsprop_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时出现了某个问题。我不仅在寻找解决方案(如果可能的话,因为我知道没有太多关于模型的细节来排除故障是很难的),还希望得到一些关于应该查看哪里以及如何排除故障的见解。之前有人在微调NASNet时遇到过这种问题吗?比如模型没有收敛的情况?最后,我知道在这种问题上很难得到答案,但我希望至少能得到一些见解,以便我可以继续我的调查。

编辑:这是交叉熵和正则化损失的图表:enter image description hereenter image description here

编辑:如答案中所建议的,我将drop_path_keep_prob参数设置为1,现在模型已经收敛,并且我在验证集上获得了良好的精度。但现在的问题是:这个参数是什么意思?它是我们应该根据数据集调整的参数之一(如学习率等)吗?


回答:

你可以做的最简单的健全性检查是针对单个小批量运行微调。任何深度网络都应该能够过拟合到这一点,如果没有大的问题。如果你发现它做不到,那么定义或你使用定义的方式一定有问题。

在你的情况下,我唯一的猜测是可能与drop_path的实现有关。在移动版本中它是被禁用的,但在训练大型模型时是启用的。它可能会使模型不稳定到无法微调的程度,因此值得尝试在禁用它的情况下进行训练。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注