machine-learning - 在 ILSVRC12 上学习 ZFNet 时测试精度无法提高

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

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

有人能给我一些启发吗?提前致谢!

<小时/>

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

调整是:

  • crop - 训练和测试的输入设置为 225 而不是 #33 中讨论的 224 ;

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

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

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

    <

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

对于可怜的部分......,我粘贴了它here

最佳答案

一些建议:

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

关于machine-learning - 在 ILSVRC12 上学习 ZFNet 时测试精度无法提高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39663506/

相关文章:

python - 使用 cross_val_scores 时性能更差,为什么?

python - 无法在 opencv (python) 中写入有效的二进制阈值图像

python - Keras 检查输入 : expected input_4 to have shape (299, 299, 3) 时出错,但得到形状为 (64, 64, 3) 的数组

python - 更新神经网络中的权重

python - 经过训练的神经网络使用相同的数据产生不同的预测(TensorFlow)

python - OpenCV - 使用凸包和自适应阈值在手指上绘制轮廓

machine-learning - 如何动态查找卷积神经网络中的网络深度

nlp - PyTorch:动态计算图之间的关系-Padding-DataLoader

python - PyCaffe中定义的层模块在哪里

c++ - 多元非线性回归