深度学习4 -- 卷积神经网络 2

引言

  • 第二部分主要介绍卷积神经网络的训练,该文为总结方便后续复习使用。

Pooling层输出值的计算

  • Pooling层主要的作用是下采样,通过去掉Feature Map中不重要的样本,进一步减少参数数量。Pooling的方法很多,最常用的是Max Pooling。Max Pooling实际上就是在n * n的样本中取最大值,作为采样后的样本值。下图是2*2 max pooling:
    pooling层处理
  • 除了Max Pooing之外,常用的还有Mean Pooling——取各样本的平均值,经过pooling层后深度是不变的

卷积神经网络的反向传播:

关于卷积层的训练


n e t l = c o n v ( W l , a l − 1 + w b ) (1) net^{l} = conv(W^{l}, a^{l - 1} + w_{b})\tag{1} netl=conv(Wl,al1+wb)(1)
a i , j l − 1 = f l − 1 ( n e t i , j l − 1 ) (2) a_{i,j}^{l-1} = f^{l-1}(net^{l-1}_{i,j})\tag{2} ai,jl1=fl1(neti,jl1)(2)

  • 上式中,net,a都是数组,W是由Wij组成的数组,conv表示卷积操作。
  • 在这里,我们假设第中的每个δ值都已经算好,我们要做的是用链式求导法则计算第层l-1层每个神经元的误差项。
    δ i , j l − 1 = ∂ E d ∂ n e t i , j l − 1 = ∂ E d ∂ a i , j l − 1 ∗ ∂ a i , j l − 1 ∂ n e t i , j l − 1 (3) \delta_{i,j}^{l-1} = \frac{\partial{Ed}}{\partial{net_{i,j}^{l-1}}} = \frac{\partial{Ed}}{\partial{a_{i,j}^{l-1}}}*\frac{\partial{a_{i,j}^{l-1}}}{\partial{net_{i,j}^{l-1}}}\tag{3} δi,jl1=neti,jl1Ed=ai,jl1Edneti,jl1ai,jl1(3)


  • 互相关的概念以及当步长为S的时候如何求解可以查看主要参考资料

卷积层filter权重梯度的计算





![](https://files.mdnice.com/user/27183/00c40201-ba8d-42f2-85c8-b0784172f36e.png

pooling层的训练





结尾

  • 首先该文与参考原文相比还是有大量删减的部分,推荐理解时候可以直接看参考资料,还有就是公式太多,所以只能截图偷个懒儿,但是该文可以大体帮助理解如何进行反向传播
  • 关于代码,个人搜集了很多手搓系列,相比较于MLP,CNN手搓代码复杂很多,个人看完后也没有更简介的方法,依然需要好几百行代码实现,所以参考资料中有包含手搓代码的文章,想要自己手搓的可以试试
  • 个人后续会整理一份pytorch版本的代码(图片不清的可以看主要参考资料,微信链接方式打开可以看到图,用浏览器看容易吞图)

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

矮人三等

秀儿,是你吗秀儿?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值