大家好,我是小木,今天是卷积神经网络的最后一节课,我们要讲的内容是大大迭代及测试环节。
首先说一个问题,就是为什么要旋转180度,可不可以不旋转?我的回答是不可以不旋转,为什么呐?这个不是卷积神经网络模型的问题,是matlab软件的问题,这个软件它的卷积函数当中有一条语句是自动把矩阵旋转180度。也就是说当我们执行卷积命令之后,它就会在执行完毕的过程中旋转180度。为了保持一致,我们在反向传播过程中在给它转回来。就是这样。如果大家用的是caffe或者tensorflow什么的,完全忽视旋转 180度这个梗就OK,当我们上节讲的不存在。
接下来,我要说的问题是大大迭代了,再说大大迭代之前,我们复习一下之前的内容:
我们之前正向传播到最后,要做的是计算一下MSE,然后再进行反向传播,之后再进行正向传播,然后反向传播,依次进行1200次。但是我们用MSE最小作为,模型最优有点牵强。为什么呐,因为我们每一次都是用了不同的数据,也就是每次随机选择50个。所以计算出来的MSE每次结果可能有点不符合逻辑。那么我们就用一个加权MSE来解决这个问题。
怎么用呢?比如我们第一次正反传播结束,我们记录一个MSE值为M1=m1,第二次传播结束时候我们令第二个MSE值为M2=0.99*M1+0.01*m2。第三次为M3=0.99*M2+0.01*m3。以此类推,直到M1200=0.99*M1199+0.01*m1200。这样我们的传播就结束了。最终的MSE结果是加权值,也就是M1200。
在我们第一次得出加权值后,同理我们把我们最后一次,也就是第1200次反向传播修订的权值和偏置量作为模型的最后的权值、偏置量。接着就是用这组权值、偏置量来进行下一次迭代(注意,这次迭代是第二次1200次的迭代哦!),我们称这样的迭代叫做大大迭代。当我们第二次大大迭代结束之后,我们又得到了一个新的MSE加权值。就这样我们设定一个大大迭代的次数N,然后让这个正反向1200次传播,大大迭代N次。
说完了大大迭代,我们还有要了解的就是怎么进行测试呢?测试很简单,在我们大大迭代N次之后,我们会得到最终卷积神经网络的各层权值和偏置量,我们把这个结果记录下来。
接着我们导入1W个28*28的数字图(注意,这些图图和之前训练的6W张图图一定是不一样的)。然后我们把每一张图片都导入神经网络中进行正向传播计算,最后我们会得到一个输出变量Y,也就是判断了这个图图上面的数字是几。我们同理导入1W张,这样我们就得到了1W个是几的数字。我们导入的图图有一点我们是必须要知道的,就是这张数字上面到底是几。我们把到底是几作为标签。然后,我们与我们卷积神经网络正向传播求出来的数据进行对比,看看一致不一致。如果1W张图中有9000张输出变量和标签一致,那么模型判断的准确率为:9000/10000=0.9=90%。现在训练这个图片准确率的权值和偏置量在网上已经有好多了,97%以上的都一堆一堆了,大家不妨百度去搜搜。这样我们的测试就完成了。
如果测试的结果不是很好,那么我们就以最后的结果作为第一次的输入(这次就不随机生成了),然后再进行正反向传播,直到符合我们的要求为止。
我们的卷积神经网络模型到这里就全部都讲解完成了,如果大家有疑问,欢迎留言或者私信我。
最后我来总结一下神经网络模型的流程,其用一张图表示为:
展开表示更简单:
深度学习的内容今后有时间,我还会为大家讲解一些实例。
————————————————
如果对我的课程感兴趣的话,欢迎关注小木希望学园-微信公众号:
mutianwei521
也可以扫描二维码哦!
![](https://i-blog.csdnimg.cn/blog_migrate/21a5ec2ff948efb116093ab47fde4f3c.png)