一、背景
在程序写完之后,我们发现,在程序中能够改变的值主要有以下几个:隐藏层层数,训练次数,学习率,权重次方。
在原来的程序中,我们的数据分别是:隐藏层层数:300,训练次数:5,学习率:0.1,权重次方,-0.5
得出来的准确率只有:54.5%
二、调试
因为初始数值准确率不高,所以,就到了关键的一步:不断测试并改变阈值,以提高准确率。
实验一:
首先我用的是每个参数都选择其能达到的最优准确率,看能否组合起来,最终形成一个总体最优准确率。
在权重次方、隐藏层层数、训练次数不变的前提下,在学习率区间为0.000088到0.001的条件下,准确率的总体趋势随着学习率的增大,先变大,后变小。
其准确率最大值为0.818,学习率为0.000088。
在权重次方、训练次数、学习率不变的前提下,在隐藏层数区间为200到350的条件下,准确率的总体趋势随着隐藏层数的增大,先变大,后变小。
其准确率最大值为0.818,隐藏层数为300/320.
在权重次方、隐藏层数、学习率不变的前提下,在训练次数区间为3到11的条件下,准确率的总体趋势随着训练次数的增大,先变小,后变大。
其准确率最大值为0.818,训练次数数为10.
在隐藏层数、学习率、训练次数不变的前提下,在权重次方区间为-0.8到-0.1的条件下,准确率的总体趋势随着权重的增大,先变大,后变小。
其准确率最大值为0.818,权重次方为-0.5.
实验二
在全部数据调试了一遍后,发现准确率不见上升,于是决定运用单一变量法,再进行调试:
初始值:权重次方为-0.5,训练次数为5,隐藏层数为300,学习率为0.5。
但发现,准确率仍无法上提。
实验三
根据实验一、二的启示,发现准确率一直处于0.818提不上去,经过研究,认为是由于训练集过少(89个),而测试集又仅有11个,数据过少,以致于无法达到理想状态。
于是,将训练集和测试集都提升到100个。
1.学习率:0.0005
2.学习率:0.005
经过调试发现,增多了数据集,可以在一定程度上提高准确率,达到了87%左右,但仍不够高。
实验四
为了使准确率能达到95%以上,最终从网上找了个10000的测试集,60000个训练集的数据集,再进行尝试。
最终,准确率达到了97%以上。
Q:为什么会有空格?
A:因为跑一次程序所需的时间较长,而我们的目标是准确率达到95%以上,而前面的一些结果,在经过多次调试后,仍然跟我们的预想相差甚远(只有85%左右)。于是乎决定放弃一些结果,直接选择更多的训练集来训练出准确率更高的程序。