神经网络常见错误(Most Common Neural Net Mistakes)
本文总结自Andrej Karpathy的一篇推特及其评论区。
原推特链接
- 你没有尝试在一个batch上首先达到过拟合
- 你忘记转换train和eval模式
- 你忘记在.backward()之前设置.zero_grad()
在Pytorch中
- 你向损失函数输入了一个经过softmax后的输出,但是可能你的损失函数需要一个原始概率作为输入
- 你没有在使用BatchNorm时将你的Linear层或Conv2d层的偏差设为False
即设置bias=False
- 你错误的使用了.view() 和.permute()
错误的认为它们是一个东西
- 初始学习率设置的过于大了
- 错误的数据增强(data augmentation)
如:涉及左右的视觉任务使用随机mirror进行数据增强
- 你忘记将做完比较的tensor转回为float()类型,或加减byte()类型然而结果超出0-255的范围
- 忘记打乱训练集的数据(shuffle),导致一个batch内的数据有较强的关联
- 使用了错误的normalization,或训练和测试过程没有使用同样的normalization
- 在错误的维度上使用softmax或其他的loss
- loss项使用了错误的符号
- 忘记在求和、平均、取最大值等操作是指明维度(dim/axis)
如在平均一个batch的loss时
- fine-tuning或feature extraction时:数据预处理不一致
(如均值、方差与预训练集不同)