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训练自己的CNN

caffe绘制训练过程的loss和accuracy曲线

如何绘制caffe训练过程中的loss和accurary的曲线

caffe + ssd网络训练过程

如何绘制caffe训练过程中的loss和accurary的曲线

卷积神经网络:总结