神经网络调参,提升准确率

------

如果只是调cnn网络的参数,可以看这篇文章

http://cs231n.github.io/neural-networks-2/#init

------

当初步搭建好网络,模型能出初步结果后,若想优化,可以考虑调整:

1.数据集扩增

可以考虑增加数据集容量,有时候简单的增加容量,准确率提升明显


2.增大数据集差异性,随机性

在制作数据集时可以考虑增加数据的差异性


3.tensor transform

pytorch 中使用transform模块对数据进行处理


4.batch_size大小

调整batch_size大小,可以16,32,64....这样依次往上调,寻找最适合的,当然不必要是2的倍数


5.shuffle=True

随机读取数据,一般在训练网络时使用,对于小数据集来说效果惊人


6.learning rate

可以使用动态学习率

也可以先是大的学习率 ,然后慢慢减小,如开始是0.1,然后是0.05,每一次都对半分,寻找最合适的学习率


7.weight_decay

权重衰减   也称L2正则化,具体可以自行百度,哈哈哈哈


8.n_epochs

当准确率不再上升,可以增加学习次数,让网络充分学习,当然要防止过拟合,


9.dropout()参数及位置

dropout() 的参数可以从0.1开始调,以0.05为间隔,各个网络有不同的参数

所放的位置也有很大的影响,不一定要在全连接层后


10.参数初始化

pytorch中会有默认的参数初始化

如果没有,可以考虑自行初始化,有助于提高准确率


11.网络结构(层数,每层的大小,函数)

可以考虑增加层次,或者调整输出的大小来提高准确率



------

希望各位多多留言

------

猜你喜欢

转载自blog.csdn.net/sinat_36024346/article/details/80582477