CNN误差反传时旋转卷积核的简明分析
来源:互联网 发布:mysql触发器 truncate 编辑:程序博客网 时间:2024/06/05 04:20
转载自:http://blog.csdn.net/zy3381/article/details/44409535
CNN(卷积神经网络)的误差反传(error back propagation)中有一个非常关键的的步骤就是将某个卷积(Convolve)层的误差传到前一层的池化(Pool)层上,因为在CNN中是2D反传,与传统神经网络中的1D反传有点细节上的不同,下面通过一个简单的例子来详细分解一下这个反传步骤。
假设在一个CNN网络中,P代表某个池化层,K代表卷积核,C代表卷基层,首先来看一下前向(feed forward)计算,从一个池化层经过与卷积核(Kernel)的运算得到卷积层:
将前向计算的步骤进行分解,可以得到以下公式:
下面根据这个前向计算的步骤来分解出反向传播的步骤:
首先要确定误差传播的目的地,从deltaC到deltaP,所以先从deltaP1开始分析
从前面的前向计算过程中可以找出P1参与了C中哪些元素的计算,并且可以根据对应的前向计算得出反向传播的计算公式:
依次类推,还有如下公式:
对于P2
对于P3
对于P4
对于P5
一直可以推到P9
总结这9个反向传播的公式到一起:
进一步可以发现,这9个公式可以用如下的卷积过程来实现:
至此,从计算的细节上解释了为什么反向传播的时候要把卷积核旋转180°,并采用full的形式来进行卷积运算。
(注:上文所说的“卷积”被认为是一种不会180°旋转第二个因子的的计算过程,实际上matlab中的的conv2(a,b)会自动180°旋转b,换句话说,在matlab中实现这个步骤的时候不用提前旋转,留给conv2函数自行旋转即可)
- CNN误差反传时旋转卷积核的简明分析
- CNN误差反传时旋转卷积核的简明分析
- 编写C语言版本的卷积神经网络CNN之三:CNN的误差反向传播过程
- CNN卷积神经网络误差反传推导
- 【深度学习:CNN】误差分析
- CNN卷积核
- 卷积神经网络CNN的理解
- CNN卷积神经网络的理解
- 卷积神经网络(cnn)的体系结构
- CNN中卷积的意义
- CNN卷积神经网络的理解
- 关于CNN的卷积理解
- cnn卷积核存储--转载
- CNN中1×1的卷积核的作用
- CNN 中1X1卷积核的作用
- CNN不同领域的共性 & 1X1卷积核
- spark深度学习算法(CNN卷积神经网络)的测试与分析
- CNN-卷积反卷积
- High Performace Web
- 问题 X: 排队问题
- PHP用socket开启多线程
- 打造超炫的专属Eclipse
- Ubuntu使用阿里云源,解决下载速度慢问题。
- CNN误差反传时旋转卷积核的简明分析
- 通过aAlarmmanger、Service、BroadcastReceiver实现定时访问任务
- 二进制和十六进制转换
- 机器学习之多元线性回归demo
- 关于Datum-〉mutable_data 的疑问
- 解决或缓存服务雪崩的方案
- XMLHTTP中setRequestHeader参数问题
- 拦截器和过滤器区别
- getChildFragmentManager和getSupportFragmentManager的区别