为实现本人的毕业设计内容,需要在cifar10数据集上对各种网络进行训练分析。但令人困惑的是,我在VGG网络中达到了89.3%的test acc,而在使用相近模型大小的Resnet网络中却无法达到该准确度。这明显与网络本身的特性相悖,我判断该情况主要是由于神经网络训练效果差引起的,残差网络的潜力没有被挖掘出来,再加上我对于神经网络训练方法不熟悉,就此时机记录不同种方法对于训练的影响。
修改网络:修改网络是一种比较玄学的方法,我适当加深或截去一部分网络层,但发现没有达到期待的效果,甚至对于加深网络起到反作用。但是在全连接层使用dropout技术,应该可以缓解网络的过拟合,可以考虑适当添加。
batch_size的大小:最开始采用128,看到网上一篇文章认为大batch_size会阻碍网络训练,32及以下的大小更好一些,尝试使用,发现可能存在一些效果,但是小batch_size会导致训练过程长,可以考虑先使用大的训练一定程度,再用小的提高准确率。
学习率:learning rate一般是从0.1开始调低,每次调节十倍或五倍,经常看到很多训练曲线,0.1的训练率会用到100epoches,而我训练的时候一般只用20个epoches左右,后面我发现,可以用train acc作为判断的指标,如果train acc一直保持上升,就可以先不动学习率。
参数初始化:normal 和 xavier是最常用两种,可以都试一下,可能就有好的效果。
训练时间的延长:如果存在train acc缓慢上升、test acc波动变化,最好延长训练时间,等稳定后再分析、在修改。