- 当显示cuda内存不够的时候,可以尝试减少batch的数量
- 当出现“cuda runtime error (59)”时,有可能是网络的最后一层输出的数量比数据集的label少。(最后一层的输出数量多于数据集的时候不会报错,因为训练的时候由于不存在多出来的label,多出来的输出神经元就等于没训练)
- train的时候用model.train(), test和valid的时候用model.eval()
- 记得每个batch要将梯度归零:optimizer.zero_grad()
- tranfer learning的时候不需要再训练feature层:model.feature
- 当训练的loss降低很慢的时候,可以适当提高learning rate(尤其是用了batch normalization之后,可以大胆提高learning rate。
- 使用SGD optimizer,不加momentum的训练准确率为25%,加momentum = 0.9准确率为41%。(使用了batch normalization,这样我们可以使learn rate更大一点,这里取0.1)
Udacity DL CNN Dog_Project Note
原文:https://www.cnblogs.com/bourne_lin/p/Udacity-CNN-DogProject-Note.html