Caffe CNN培训过程陷入循环

时间:2018-07-09 06:39:15

标签: python deep-learning caffe conv-neural-network hdf5

我有一个关于咖啡的问题,但可能是关于CNN和深度学习的教学过程更普遍的问题。

基本上,问题是我一直在使用NIH胸部X射线样本数据集(包含5606张图像)测试多种架构。我将数据提取到5个.h5文件中,每个文件1000张图像,并将它们的大小调整为224x224。我省略了3个通道的图像以保持一致(因为它们大多数是灰度的)。所以我的输入形状是(batch_size, 1, 224, 224)。当我用0 - no finding, 1 - any finding标记图像时,这只是二进制分类。

我决定使用MobileNet架构,只是将最后一层的输出大小更改为2。

我的问题是,每次我运行培训过程时,似乎培训过程都会陷入一个循环。网络只是围绕一组值进行损耗和准确性循环。我尝试更改求解器参数,批处理大小,更改网络体系结构,但始终是相同的-精确值只是有所不同。

这是我的训练日志的要点,其中包含我的网络体系结构,求解器文件和整个输出:

https://gist.github.com/ouadakarim/34ac5744fadfd63a25c806b651bba0fb

为了更好地说明我的问题,以下是上述日志的图表,其中包含损失和准确性: Training learning curve plot

另一个培训过程示例(不同的批处理大小和求解器参数): Another learning curve

如您所见,它总是围绕相同的值循环。我不确定可能是什么问题,但是我有一些想法:

1)我的样本集包含5000张图像,不足以正确教授网络。

2)求解器的配置不正确(学习率)。

3)网络体系结构太复杂了。

我一开始也尝试使用简单的网络体系结构,但结果更糟。

对于任何建议,我将不胜感激。

1 个答案:

答案 0 :(得分:3)

我发现一个错误:

您设置: use_global_stats: true 在您的批处理规范层中

但是在训练中那是错误的 您应该将其设置为false 或只是删除所有use_global_stats: true

在没有声明的情况下,caffe将使用默认值: (use_global_stats: true在测试中 和 use_global_stats: false进行培训)