试验1
试验1是我们用100个数据图像,其中89个数据图像作为训练集,11个为测试集。一开始跑的时候采用了单一变量法的原理,毫无方向的调参数。
前五次我以为权重那个次方对准确率有影响,于是以权重次方为因变量,准确率为自变量
然后发现这个因素并不是主要影响因素,所以决定不再考虑这个因素的变化,设回原始值。再来考虑隐层层数的影响(这里为啥只考虑隐层,不考虑输入和输出,前面的代码分析有提及https://www.jianshu.com/writer#/notebooks/40513533/notes/60513797)
通过隐层的变化可以看出,在300的时候准确率明显比较高,然后固定隐层为300,改变学习率
我们发现当隐层层数为300的时候,学习率为0.001和0.0088都能跑到准确率百分之八十以上,这两者其实数值差不多,我就选择隐层层数300,学习率0.001是目前为止的最佳参数,然后固定这两个参数,改变训练次数的数值
然而此时默认为训练次数5,隐层层数300,学习率为0.001,准确率为0.8181.
现在目前确定的有三个变量直接影响准确率,即方程有三个变量x,y,z。通过固定一个变量,同时改变其他两个变量,我先固定学习率为0.001.得出
可以发现当训练次数为7次,隐层层数200,学习率0.001时,准确率为0.90,有些空格没有数据,是因为跑一次非常费时间,跑出来,没有找到相关性的数据,没有列出来,此时已经凌晨四点了,我不是传递我有多辛苦的信号,我是想说调参必须花大量精力,去得出大量的数据,然后分析数据。
试验2
因为测试集的问题,准确率迟迟达不到0.99,我就把测试集跟训练集合并成一个数据集,将这个数据集即用来做训练集又用来做测试集(书里有说,这样调出来的参数,用来测测试集的准确率比较高,但实际运用中的准确率比较不理想,但我是想验证一下,能不能跑到0.99)结果测试如下
最后还是没跑到0.99,我就换了一个大的数据集,来到试验3
试验3
试验3中的训练集数据6万个,测试集2万个,结果我参数都没怎么调,一跑就百分之九十以上,达到我们需要的目的。
从三个试验中总结出神经网络如果要预测出准确率高,则数据集要大,再者就是参数要好,通过试验1、2可以看出,在数据集比较小的情况下,我们可以通过调节参数,来尽可能的是准确率提高,通过试验3得出,神经网络在大量数据学习之后的准确率比较大,所以我们不但要有一个庞大的数据集,而且还要有一个最优的参数,两者的结合,才能是我们的模型准确的预测我们想要的结果,从而使误差降到最低。
如果有不对的地方,或者有更好的方法,还望大家指点
链接:代码和数据文件https://pan.baidu.com/s/1yY1NGSvosneUGsxDupvrgg
提取码:rrq2
网友评论