通俗易懂的卷积神经网络教程-第五讲

如果大家觉得好,求转载或者留言呀!

大家好,今天进入第五讲了,第五讲的内容不多,只有一部分:卷积层向池化层的反向传播。

昨天我们讲到了池化层向卷积层进行反向传播,在传播完成之后,我们得到了12个8*8的矩阵δδ.接下来,我们要利用这个矩阵向池化层进行反向传播:

首先,大家想想我们正向传播的时候,什么变成了8*8的矩阵呢?如果没有忘记的话那很好,要是忘记的话,我再提醒一次,我们开始有6个12*12的矩阵,然后通过12个6*5*5的滤波器进行卷积而形成的12个8*8矩阵。现在我们倒过来了,怎么能把8*8的矩阵给变回12*12呢?

第一步,我们当初是有12个6*5*5的矩阵,也就是说有12个滤波器,每一个滤波器中含有6个5*5的矩阵。我们把这些矩阵抽出来,然后旋转180度。比如第一个滤波器中的第一个5*5的矩阵是:

 

旋转之后就变成了:


也就是顺时针旋转了两次90度,如果大家看不出来,你们就想矩阵的棱角翻滚了两次。至于为啥旋转180度,本人也是一头雾水,我觉得不旋转也可以的,但是人家标准程序是旋转的我们就按照他们的来吧。

第二步,我们把之前我们池化层的128*8矩阵的值看作一个整体,与这个旋转之后的滤波器做卷积,可是这次做卷积和之前正向传播的不一样了,我们需要的是在每一行每一列前面后边上面下面都填写上40,这样8*8的矩阵就变成了一个16*16的矩阵:

 

之后我们做卷积,填写0的卷积我们叫做全卷积。因为我们一共有128*8的矩阵,我们看作是一个整体,上面已经提到了,而我们当初的滤波器是12个,每一个里面都有6个矩阵,首先让这个整体与12个滤波器中每一个滤波器的第一个矩阵(共十二个,也就是所有滤波器中的第一个矩阵)进行全卷积,然后加和。接着在与每一个滤波器中的第二个矩阵做全卷积,直到每一个滤波器中的6个矩阵都卷积完成。这样我们就得到了612*12的矩阵,我们叫做F(F1~F6)。如图所示:

 

 

接着我们要做的是把这6个矩阵F1~F6进行反向传播,这个是卷积层对池化层的反向传播,方法与第四讲的方法一致,我就不再叙述了。我们进行反向传播运算可以得到新的6个矩阵FF1~FF6,如图所示:

 

这样我们的反向传播全部都完成了。我们得到的东西有:δ1~δ12、δδ1~δδ12F1~F6FF1~FF6四大矩阵,如这张图所示:


然而我们从前面讲起,我们只求了一张图片,而一个batchsize的值为50,我们还有49组数据没有求呀,怎么办,我们把其余的49组按照我们4~5讲中的方法都进行传播一遍。我们就会得到50组四大矩阵了。这样反向传播才是真正的结束。

为什么要进行反向传播呢,很简单!因为我们正向传播之后,我们发现输出变量和标签不一致,而且它们的MSE差的很多很多,我们于是通过反向传播求得四大矩阵,然后通过它们来把滤波器、BP全连接的权值及其偏置量给调整一下,从而使得结果吻合。那么我们如何更改呢,我们下回分解好了,今天太累了就写到这里了。


下一讲,权值更新


————————————————

如果对我的课程感兴趣的话,欢迎关注小木希望学园-微信公众号: 

mutianwei521

也可以扫描二维码哦!

 


猜你喜欢

转载自blog.csdn.net/u013631121/article/details/80315401