最近在做分类模型,记录一下调参技巧:
1. 数据的预处理。在视觉任务中,对图像数据归一化可以使模型准确率提高一大截。数据增强会减小过拟合。
1. 学习率,一般0.0001,但如果用了pre-trained模型,设置为0.00001
2. batch_size,机器允许情况下越大越好,但根据训练数据大小,这个值也不能特别大,一般小数据集推荐128,像ImageNet这种256,512。如果你的batch_size是64,不妨设大一点,会有惊喜。
3. 如果是卷积神经网络,中间卷积的通道数channels很重要,有次把64通道改为128,准确率涨了10%左右。
4. 训练集是否打乱,即pytorch中trainloader的shuffle是否为True。如果不小心设为False,要改成True。
5. 损失函数的选择,根据目标不同,选择合适的损失函数。
6. 分类模块的线性部分一般两层就够了,过多层会导致过拟合。举个例子,Vgg16的classification部分。
7. 如果在cifar10,cifar100这种数据集上过拟合了,可以先拿imageNet训练一下,然后微调。在ImageNet上也不用训练多久,训练到个50%-60%准确率就可以拿去微调了,效果会好很多。