实际问题
不小心把batch_size设置为1之后,发现模型在第一个epoch的时候就不收敛了,在一个不太理想的准确率(0.7)左右晃荡。
然后更改为16之后,训练速度大大提升,准确率也开始收敛。
查阅资料
按理来说,batch_size为1是最好的,一次只处理一个样本,让模型可以学到的东西更加丰富。不过实际上调的时候,会出现batch_size太小导致网络收敛不稳定,最后结果比较差。
这是因为线性神经元在均方误差代价函数的错误面是一个抛物面,横截面是椭圆。对于多层神经元,非线性网络,在局部依然近似是抛物面。使用在线学习,每次修正方向以各自样本的梯度方向修正,难以达到收敛。
一点想法
参数是一个玄学问题,啊,浪费好多时间啊,本来按照正常的速度实验都有结果了,事实多么残酷。