Caffe CNN训练过程陷入循环

Caffe CNN training process falls into a loop

我有一个关于 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)网络架构太复杂

起初我也尝试过使用简单的网络架构,但结果更糟。

如果有任何建议,我将不胜感激。

我注意到一个错误:

你设置: use_global_stats: true 在你的批量规范层

但在训练中这是错误的 你应该设置它 false 或者干脆删除所有 use_global_stats: true

无需声明,caffe 将使用默认值: (use_global_stats: true 在测试中 和 use_global_stats: false 在训练中)