【问题标题】:Test accuracy cannot improve when learning ZFNet on ILSVRC12在 ILSVRC12 上学习 ZFNet 时测试精度无法提高
【发布时间】:2017-02-01 11:24:48
【问题描述】:

我已经为我的研究实施了一个自制的 ZFNet (prototxt)。在定义了 20k 次迭代后,测试准确率保持在 ~0.001(即 1/1000),测试损失在 ~6.9,训练损失在 ~6.9,这似乎网络一直在 1k 类之间玩猜谜游戏。我已经彻底检查了整个定义并尝试更改一些超参数以开始新的训练,但无济于事,屏幕上显示相同的结果......

谁能给我点灯?提前致谢!


prototxt 中的超参数来源于论文 [1]。正如论文中的图 3 所示,所有层的输入和输出似乎都是正确的。

调整如下:

  • 训练和测试输入的crop-s 设置为225,而不是224,如#33中所述;

  • conv3conv4conv5 的一像素零填充以使 blob 的大小保持一致 [1];

  • 所有可学习层的填充类型从 [1] 中的 constant 更改为 gaussianstd: 0.01

  • weight_decay:按照@sergeyk 在 PR #33 中的建议,从 0.0005 更改为 0.00025

[1] Zeiler, M. 和 Fergus, R. 可视化和理解卷积网络,ECCV 2014。

对于可怜的部分...,我把它贴在here

【问题讨论】:

  • 感谢格式化! @Shai

标签: machine-learning computer-vision deep-learning caffe imagenet


【解决方案1】:

一些建议:

  1. 将初始化从 gauss 更改为 xavier
  2. 使用"PReLU" 激活,而不是"ReLU"。一旦你的网络收敛,你可以微调以删除它们。
  3. 尝试将base_lr 减少一个数量级(甚至两个数量级)。

【讨论】:

  • 感谢您的建议。我将更改参数以启动新的实验,然后将添加反馈。 @Shai
  • 只是将base_lr0.01 降到0.001,经过大约122k 次迭代,accuracy 被改进为高于0.47。我将在 700k 次迭代后返回报告最终结果。 @Shai
  • 我将base_lr0.001提高到0.005,即我初始设置中base_lr的一半,700k迭代后的测试精度为60.x %,这比在官方 caffe 中复制的 Caffenet 或 AlexNet 高出近 3 个点。您的一项建议挽救了我的一天,其余的可能对通用培训任务有所帮助。 @Shai
猜你喜欢
  • 2017-10-20
  • 2020-12-17
  • 2021-07-16
  • 2017-05-17
  • 2021-04-06
  • 1970-01-01
  • 2021-12-09
  • 1970-01-01
  • 2010-11-29
相关资源
最近更新 更多