独家 | 你的神经网络不起作用的37个理由(附链接)

640?wx_fmt=png

作者:Slav Ivanov

翻译:吴金笛

校对:丁楠雅

本文约4400字,建议阅读12分钟

本文列举了在搭建神经网络过程中的37个易错点,并给出了解决建议。


有一个网络已经训练了12个小时。一切看起来都很好:梯度是逐渐变化的,损失在减少。但接下来的预测:都是零,所有的图像背景都没有被检测到。“我做错了什么?”——我问我的电脑,但它没有回答我。
你从哪里开始检查是否你的模型输出了垃圾(例如,预测输出了平均值,或者它的准确性真的很差)?
由于许多原因,神经网络可能不会进行训练。在许多调试过程中,我经常发现自己在做同样的检查。我把我的经验和最好的想法整理在这个便利的列表中,希望它们对你也有用。

目录


  • 1. 如何使用本指南?

  • 2. 数据集问题

  • 3. 数据规范化或增强的问题

  • 4. 实现问题

  • 5. 训练问题

 

1.如何使用本指南?

  很多方面都可能出错。但是其中一些比其他的更有可能被防范。我通常从以下简短的清单开始,作为紧急的第一反应:
  • 1. 从一个已知适用于这类数据的简单模型开始(例如,图像的VGG)。如果可能,使用标准损失。

  • 2. 关闭所有的附加功能,例如正则化和数据增强。

  • 3. 如果对一个模型进行微调,要仔细检查预处理,因为它应该与原始模型的训练相同。

  • 4. 验证输入数据是否正确。

  • 5. 从一个非常小的数据集(2-20个样本)开始。对它进行过度拟合,并逐渐添加更多的数据。

  • 6. 开始逐步添加所有被省略的部分:增强/正则化、自定义损失函数、尝试更复杂的模型。


如果上面的步骤没有解决问题,那就根据下面的列表逐一验证。

2.数据集问题


640?wx_fmt=png


  • 1.检查你的输入数据


检查你向网络输入的数据是否有意义。 例如,我不止一次搞混了图像的宽度和高度。 有时候,我会错误地输入全0数据。 或者我会一遍又一遍地使用相同的批次。 因此,打印/显示几批输入和目标输出,以确保它们是正确的。
  • 2.尝试随机输入


尝试传入随机数而不是实际数据,看看错误是否相同。 如果是这样,这是一个确定的信号,说明你的网络在某个时候将数据转换为了垃圾。 试着一层一层或一个操作一个操作的调试看看哪里出错了。
  • 3. 检查数据加载程序


你的数据可能没问题,但是将输入传递到网络的代码可能会出错。 在任何操作之前打印并检查第一
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值