实验结果:
Vgg16 | cifar100 | 无验证集: best_acc= 74.570% Epoch=128,best_acc= 73.240%, test_acc= 72.090% |
resnet20 | cifar10 | Epoch=192,best_acc= 91.770%, test_acc= 91.450% |
resnet20 | cifar100 | 无验证集:Epoch=162,best_acc= 69.660% Epoch=89,best_acc= 66.590%, test_acc= 66.260% |
经验:
1、Adam收敛快,SGD精细,用torch.optim写SGD就可。
2、scheduler,Cos的收敛没有自定义SGD按照epoch逐渐减小的好
3、实验过程中很多都是错的。所有精度的增长都不是靠调参调出来的,而是一定发现了bug或者增加了一段trick的代码。一定是代码有问题!不要妄想通过调参达到不该有的高度!有的时候在参数差不多的情况下,先看整体趋势,收敛的情况,而不是一直微调参数,首先整体上要先达到一个准确率左右(即baseline)再调。如果baseline都没找到,那肯定是代码的问题,trick的问题而不是参数的问题,参数对于整体的acc提升并没有那么那么大。
4、一些trick:cifar10的policy,cutout优化。pretrain,是vgg16cifar100的质变,成功上70
5、batch_size设小了精度有提升,但不算很高,都是微调。但需要的时间边长了。
6、基本上,一开始的lr设置为0.1,0.1*0.1*0.1*0.5(*0.1)最后lr到0.0001~0.00001