训练神经网络的常见错误

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

本文内容来自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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值