之前出现过两次这种情况,也就是出现这类情况,对于所有的输入,网络都只能判断成某一类,比如对于所有的输入,输出都是“猫”。还是总结下,当然如果有幸被大佬们看到的话,希望大佬们能给予补充。
做了一点实验,但是不是非常的全面,也没有考虑到每一种情况,而且对于参数的选择也比较随意。所以这个博客的结论是根据作者所采用的网络,一开始设置的超参得出的结论,仅供参考。
一、网络结构
本次实验采用的数据集是cifar-10,使用的网络架构如下,没有写初始化的部分就是没有进行初始化。
网络训练的源代码不太重要,想看私聊。
二、接下来是实验结果
所有的结果和结论都是至少跑了五次,每次1个以上epocn(个别除外)得出的观察结果,也可能会有误差,仅供参考,表一种图片的亮度表示基本上用的是0-255,表二在之前的基础上,默认亮度表示范围是0-1,然后batch_size默认成500,其实是因为作者比较懒,这样训练速度比较快些。
三、结论
1、如果是对于图片进行分类的话,需要把图片的像素的表示范围控制在0-1之间而不是0-255,有一定的数字图像处理基础的同学应该明白怎么操作,这点不再展开讲解。个人的理解是这样的,应该是对于softmax层的函数造成的,具体推导过程之后有时间再发,如果一定要用0-255表示的话,可以通过其他方式,但是感觉效果相当不明显。
2、改变初始化的权重,我只改过方差,就比如你初始化参数的时候使用的是一个服从高斯分布的,均值为0,方差为0.1的初始化方式,方差过大可能会导致不收敛的状况发生,这时候我们可以尝试着把方差调小(根据结果来看调小貌似比较管用)
3、学习率过大,这个调小点就很容易出效果,但是也不应该过于小,不然下降速度会太慢。可以每次下降10倍进行尝试。
4、batchsize不益过小,不然可能会出问题的
4、(猜测,但没遇到过),就是图片没有shuffle,也就是没有打乱。这样有可能是这样的,对于最一开始训练数据的标签,全部都是猫,那么网络就可能遇到任何输入都说是猫,这样的话有可能引起这样的状况。如果shuffle打乱不充分应该也有可能引起这种状况。
5、不初始化权重也有可能会引起这种状况,但是亲自尝试后发现在这几次实验中并没有。
6、也可能有多种操作的组合可以让网络收敛,但是目前没有发现或者实验出来,可以多次进行尝试。
7、至于采用哪种措施可以让网络的效果更好,这个就没有尝试了。