训练神经网络的常见错误

本文列举并解释了训练神经网络时容易犯的六个常见错误,包括未尝试过拟合单个batch、忘记切换训练/评估模式、漏掉.zero_grad()、向损失函数传递错误的数据、在使用BatchNorm时处理bias不当以及混淆view()和permute()的用法。通过了解这些错误,可以帮助提高模型训练的效率和准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文内容来自Andrej Karpathy, 李飞飞的高足。
twitter截图如下:

这里写图片描述

下面来逐点说明。受小博主知识上界限制,文中不免有理解不正确之处,恭请批评指正。

1、you didn’t try to overfit a single batch first.
首先尝试用小数据集作为一个batch,奔着过拟合去,短时间内排除明显的错误。

2、you forgot to toggle train/eval mode for the net.
忘记为网络切换训练/评估模式
很明显,这个是针对model在训练和评估时,batchsize大小不同和Dropout中keep_prob值的不同。

3、you forgot to .zero_grad() (in pytorch) before .bachward().
在.backward()之前忘了添加.zero_grad() (这条针对pytorch)
前人有碰到过这种问题,忘记写.zero_grad(),因而导致结果非常差。其实这条应该结合在第一条中检查。

4、you passed softmaxed outputs to a loss that expects raw logits.
将softmaxed输出的值传给了损失函数,而事实上,传入损失函数的应该是logits值,而不是softmaxed输出值。
这条应当留意,此前个人没怎么考虑过这种问题。

5、you didn’t use bias=False for your Linear/Conv2d layer when using BatchNorm, or conversely forget to include it for the output layer. This one won’t make you silent

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值