【问题标题】:Why Validation Error Rate remain same value?为什么验证错误率保持不变?
【发布时间】:2017-05-02 22:08:47
【问题描述】:

我正在研究面部图像的深度学习 (CNN + AE) 方法。

我有

  • 人脸图像112*112*3的输入层

  • 3卷积+最大池化+ReLU

  • 2 层全连接,512 个神经元,50% dropout 避免过度拟合和最后一个输出层有 10 个神经元,因为我有 10 节课。

  • 还使用了 softmax 交叉熵和 L2 的降低均值。

为了训练,我将数据集分为 3 组:

  1. 60% 用于培训
  2. 20% 用于验证
  3. 20% 用于评估

问题是在几个 epoch 之后,验证错误率保持固定值并且永远不会改变。我使用tensorflow 来实现我的项目。

我以前在使用 CNN 时没有遇到过这样的问题,所以我认为这是第一次。我已经检查了它基于 tensorflow 文档的代码,所以我不认为问题出在代码上。也许我需要更改一些参数,但我不确定。

对此类问题的常见解决方案有任何想法吗?

更新: 我将优化器从动量更改为默认学习率的 Adam。现在验证错误发生了变化,但大多数时候它低于小批量错误,而两者的批量大小相同。

我已经以 0.1 作为初始值测试了模型有无偏差,但还没有很好的拟合。

更新 我修复了这个问题,我会尽快更新更多细节。

【问题讨论】:

  • 每次都预测同一个类吗?你的学习率是多少?
  • @chris_anderson 我刚刚检查过,每次都是同一个班级,学习率为 0.01,并且逐渐降低。
  • 你的验证率是从一开始就降低,然后在某个时期停止,还是从第一次迭代开始就一样?
  • 只是几个时期的变化然后保持不变直到最大时期结束

标签: tensorflow deep-learning convolution conv-neural-network


【解决方案1】:

我发现对此类问题有帮助的一个常见解决方案是使用 TensorBoard。您可以在每个 epoch 之后为计算图中的不同点添加细节可视化训练性能信息。添加关键指标是值得的,因为您可以在应用自适应学习率、批量大小、神经网络架构、辍学/正则化、GPU 数量等变化后看到训练的进展情况。

这是我发现有助于添加这些详细信息的链接: https://www.tensorflow.org/how_tos/graph_viz/#runtime_statistics

【讨论】:

  • 谢谢,我会试试这个。
  • 当我的权重快速收敛到零时,我观察到了类似的行为。使用 TensorBoard 你可以立即看到。
猜你喜欢
  • 2018-12-20
  • 1970-01-01
  • 2021-12-28
  • 2021-03-01
  • 2019-12-31
  • 2020-01-06
  • 1970-01-01
  • 2012-12-30
  • 2012-04-03
相关资源
最近更新 更多