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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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