作者:Slav Ivanov
编译:ronghuaiyang
导读
大家都遇到过这种情况,训练的时候没什么问题,测试的时候就不对劲了,想找问题,感觉无处入手,那么今天,给你37个建议,看看再说吧。
这个网络在过去12个小时中一直在进行训练。一切看起来都很好:梯度在流动,损失在降低。但是接下来的预测结果是:所有都是0,所有都是背景,没有检测到任何东西。“我做错了什么?”—我问我的电脑,电脑没睬我。
你从哪里开始检查你的模型是否正在输出垃圾(例如预测所有输出的平均值,或者它的准确性非常差)?
由于一些原因,网络可能不会进行训练。在许多调试的过程中,我经常发现自己在执行相同的检查。我把我的经验和最好的想法整理在这个方便的列表里。我希望它们对你也有用。
0. 如何使用这个指南?
很多事情都可能出错。但其中一些更有可能出现问题。我通常以这张简短的清单作为紧急第一反应:
- 从一个已知对这类数据有效的简单模型开始(例如,图像的VGG)。如果可能的话,使用标准的损失。
- 关闭所有花哨的功能,例如正则化和数据扩充。
- 如果对模型进行finetune,请仔细检查预处理,因为预处理应该与原始模型的训练相同。
- 验证输入数据是否正确。
- 从一个很小的数据集(2-20个样本)开始。对其进行过拟合,并逐渐添加更多数据。
- 开始逐步添加所有遗漏的部分:增强/正则化,自定义损失函数,尝试更复杂的模型。
如果上面的步骤没有什么用,那么就从下面的列表开始,逐一验证。
I. 数据集的问题

更多内容请访问:IT源点
注意:本文归作者所有,未经作者允许,不得转载