博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CNN卷积核反传分析
阅读量:5910 次
发布时间:2019-06-19

本文共 699 字,大约阅读时间需要 2 分钟。

CNN(卷积神经网络)的误差反传(error back propagation)中有一个非常关键的的步骤就是将某个卷积(Convolve)层的误差传到前一层的池化(Pool)层上,因为在CNN中是2D反传,与传统神经网络中的1D反传有点细节上的不同,下面通过一个简单的例子来详细分解一下这个反传步骤。

假设在一个CNN网络中,P代表某个池化层,K代表卷积核,C代表卷基层,首先来看一下前向(feed forward)计算,从一个池化层经过与卷积核(Kernel)的运算得到卷积层:

v2-b0bcd4798869756e1644b45e6fdbc744_hd.jpg

将前向计算的步骤进行分解,可以得到以下公式:

v2-68dd4f780aaec19db6b894e6ee831fa0_hd.jpg

下面根据这个前向计算的步骤来分解出反向传播的步骤:

v2-dbe0c9bdd82d448d3c2180f109b9feec_hd.jpg

首先要确定误差传播的目的地,从deltaC到deltaP,所以先从deltaP1开始分析

从前面的前向计算过程中可以找出P1参与了C中哪些元素的计算,并且可以根据对应的前向计算得出反向传播的计算公式:

v2-a0a5eeecf3d961126b773241b31296f4_hd.jpg

依次类推,还有如下公式:

对于P2

v2-5ad5565a813fdcc73ca095c40bb4a89f_hd.jpg

对于P3

v2-363b1433984ee6e668549d164b40b5a4_hd.jpg

对于P4

v2-505d7f0c6fff090b2b13e77105228ef7_hd.jpg

对于P5

v2-20768231669f4c05b01336328a8e6b8f_hd.jpg

一直可以推到P9

总结这9个反向传播的公式到一起:

v2-e9823fbea4070db0a97996c85ce37998_hd.jpg

进一步可以发现,这9个公式可以用如下的卷积过程来实现:

v2-eb08c18129f7d410e4c8db1060ecd482_hd.jpg

至此,从计算的细节上解释了为什么反向传播的时候要把卷积核旋转180°,并采用full的形式来进行卷积运算。

(注:上文所说的“卷积”被认为是一种不会180°旋转第二个因子的的计算过程,实际上matlab中的的conv2(a,b)会自动180°旋转b,换句话说,在matlab中实现这个步骤的时候不用提前旋转,留给conv2函数自行旋转即可)

转载于:https://www.cnblogs.com/hdk1993/p/8893974.html

你可能感兴趣的文章
Quartz 框架的应用
查看>>
Tomcat编译jsp生成Servlet文件的存放位置
查看>>
Android事件总线(三)otto用法全解析
查看>>
Android 利用线程运行栈StackTraceElement设计Android日志模块
查看>>
SSD硬盘的4K对齐
查看>>
关闭CENTOS不必要的默认服务
查看>>
MarkdownPad2.5 注册码
查看>>
mybatis指定jdbctype
查看>>
testng入门教程2用TestNG编写测试及执行测试
查看>>
perl 下使用非root用户安装模块
查看>>
UML课程复习重点
查看>>
Perl 获得当前路径
查看>>
Makefile经典教程(掌握这些足够)
查看>>
『设计模式』之小试牛刀
查看>>
算法笔记_035:寻找最小的k个数(Java)
查看>>
BZOJ 4031: [HEOI2015]小Z的房间 [矩阵树定理 行列式取模]
查看>>
BZOJ 2244: [SDOI2011]拦截导弹 [CDQ分治 树状数组]
查看>>
Jquery里live事件移除原因
查看>>
《剑指offer》-前n项和不准用通解和各种判断
查看>>
sklearn中随机森林的参数
查看>>