突然发现之前遇到的问题是容易反复遇到的,那就随手做一个整理吧~
1. 在feature层到classifier层中,若出现如下错误:
- 则需要改变FC层的入口参数,如此图中可以改为:
x = x.view(out.size(0), -1)
self.linear = nn.Linear(320, 10) # 320为入口参数
2. 训练中training accuracy有变化,但test accuracy始终为10%(图片分类):
- 可能是由于learning rate太大导致的,如lr=0.1。可能是由于learning rate太大导致的,如lr=0.1。
- 尝试加入BN层之后优化效果明显,loss不再上下跳动,开始下降。
3.Loss过大,大到几十Billion
最后发现是构建网络的时候忘记加激活函数了,常用的有ReLU和Sigmoid函数。不加的话将是一个线性的网络。
4.准确率突然跳水到某一固定值
调小lr,试试1e-5.考虑这个问题是由于梯度爆炸引起的,但尚未确定,改动weight_decay未产生明显影响。
5.model出现sizes must be non-negative报错
应该计算一下图的大小,可能是图的大小不足以支持convolution的操作了,需要改变conv参数,增加padding等。
6. loss下降,但test acc几乎不变化
- 调整学习率,可能是由于学习率过大导致
- 尝试更换更复杂的模型,以确定程序本身没有问题
7. Caffe转Pytorch中,bn+scale层=bn层,
class torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum&