Caffe CNN 训练过程陷入循环
Posted
技术标签:
【中文标题】Caffe CNN 训练过程陷入循环【英文标题】:Caffe CNN training process falls into a loop 【发布时间】:2018-12-16 18:40:28 【问题描述】:我有一个关于 caffe 的问题,但可能是关于 CNN 和深度学习的教学过程的更普遍的问题。
基本上,问题在于我一直在使用包含 5606 张图像的 NIH 胸部 X 射线样本数据集测试多种架构。我将数据提取到 5 个.h5
文件中,每个文件有 1000 张图像,并将它们的大小调整为 224x224。我省略了 3 通道图像以保持一致(因为它们中的大多数都是灰度的)。所以我的输入形状是(batch_size, 1, 224, 224)
。这只是二进制分类,因为我用0 - no finding, 1 - any finding
标记了图像。
我决定使用MobileNet
架构,只是将最后一层的输出大小改为2。
我的问题是,每次我运行训练过程时,训练过程似乎都陷入了循环。网络只是围绕一组损失和准确性值循环。我尝试更改求解器参数、批量大小、更改网络架构,但始终相同 - 只是在精确值方面有所不同。
这是我的训练日志的要点,其中包含我的网络架构、求解器文件和整个输出:
https://gist.github.com/ouadakarim/34ac5744fadfd63a25c806b651bba0fb
为了更好地说明我的问题,这里是上述日志的损失和准确性图:
训练过程的另一个示例(不同的批量大小和求解器参数):
如您所见,它总是围绕相同的值循环。我不确定可能是什么问题,但我有一些想法:
1) 我的样本集包含 5000 张图像,不足以正确地教网络。
2) 求解器配置不正确(学习率)。
3) 网络架构过于复杂。
一开始我也尝试过使用简单的网络架构,但结果更糟。
我将非常感谢任何可能是问题的建议。
【问题讨论】:
【参考方案1】:我发现一个错误:
你设置:
use_global_stats: true
在您的批处理规范层中
但在训练时这是错误的
你应该设置它false
或者干脆删除所有use_global_stats: true
如果不声明,caffe 将使用默认值:
(use_global_stats: true
在测试中
和
use_global_stats: false
训练中)
【讨论】:
非常感谢,好像就是这样。我复制了部署文件,可能没有注意到。我将运行一个新的教学过程,让您知道这是否解决了我的问题,当然也批准了答案。谢谢! 最后看起来像以前一样在学习,但可能是因为数据集太小了。感谢您指出use_global_stats
的问题。现在看来,这些值并不完全相同。以上是关于Caffe CNN 训练过程陷入循环的主要内容,如果未能解决你的问题,请参考以下文章
如何绘制caffe训练过程中的loss和accurary的曲线