卷积神经网络CNN的前向和后向传播(一)
卷积神经网络CNN的前向和后向传播
- 卷积运算与相关的区别
- 卷积运算的正向和反向传播
原文 Forward And Backpropagation in Convolutional Neural Network地址: https://medium.com/@2017csm1006/forward-and-backpropagation-in-convolutional-neural-network-4dfa96d7b37e 在墙外,在这写是为了方便大家参考。
下面的文章演示了卷积运算在CNN中进行反向传播的过程。
卷积运算与相关的区别
让我们考虑卷积层中的输入和卷积核(也称之为滤波器)。简单起见,channelchannelchannel=1,输入矩阵XXX为3x3,卷积核FFF为2x2,padding=0,stride=1padding=0,stride=1padding=0,stride=1。前向传播为卷积过程。
而滤波器矩阵FFF与输入矩阵XXX的相关矩阵OOO如下图所示:
卷积核与输入图像的卷积相当于将卷积核旋转180度(先水平翻转再垂直翻转),然后与输入矩阵进行相关操作:
由此可见,卷积运算与相关运算是一样的,只不过是和旋转后的卷积核进行相关运算。
卷积运算的正向和反向传播
注意: 为了方便推导出卷积核的值和输入矩阵值的梯度方程,我们将考虑卷积运算和相关运算看作是一样的,这只是为了处理上简单的考虑。
因此,卷积操作可以用下图来表示:
注意此处为了方便,FFF没有进行180度翻转,因此这里卷积和相关是一样的。
可以用下面的图来进行可视化。
现在,我们要计算卷积核 FFF 相对于误差 EEE 的梯度,要解以下的方程。
∂EF11=∂EO11⋅∂O11F11+∂EO12⋅∂O12F11+∂EO21⋅∂O21F11+∂EO22⋅∂O22F11\frac{\partial E}{F_{11}}=\frac{\partial E}{O_{11}}·\frac{\partial O_{11}}{F_{11}}+\frac{\partial E}{O_{12}}·\frac{\partial O_{12}}{F_{11}}+\frac{\partial E}{O_{21}}·\frac{\partial O_{21}}{F_{11}}+\frac{\partial E}{O_{22}}·\frac{\partial O_{22}}{F_{11}}F11∂E=O11∂E⋅F11∂O11+O12∂E⋅F11∂O12+O21∂E⋅F11∂O21+O22∂E⋅F11∂O22
∂EF12=∂EO11⋅∂O11F12+∂EO12⋅∂O12F12+∂EO21⋅∂O21F12+∂EO22⋅∂O22F12\frac{\partial E}{F_{12}}=\frac{\partial E}{O_{11}}·\frac{\partial O_{11}}{F_{12}}+\frac{\partial E}{O_{12}}·\frac{\partial O_{12}}{F_{12}}+\frac{\partial E}{O_{21}}·\frac{\partial O_{21}}{F_{12}}+\frac{\partial E}{O_{22}}·\frac{\partial O_{22}}{F_{12}}F12∂E=O11∂E⋅F12∂O11+O12∂E⋅F12∂O12+O21∂E⋅F12∂O21+O22∂E⋅F12∂O22
∂EF21=∂EO11⋅∂O11F21+∂EO12⋅∂O12F21+∂EO21⋅∂O21F21+∂EO22⋅∂O22F21\frac{\partial E}{F_{21}}=\frac{\partial E}{O_{11}}·\frac{\partial O_{11}}{F_{21}}+\frac{\partial E}{O_{12}}·\frac{\partial O_{12}}{F_{21}}+\frac{\partial E}{O_{21}}·\frac{\partial O_{21}}{F_{21}}+\frac{\partial E}{O_{22}}·\frac{\partial O_{22}}{F_{21}}F21∂E=O11∂E⋅F21∂O11+O12∂E⋅F21∂O12+O21∂E⋅F21∂O21+O22∂E⋅F21∂O22
∂EF22=∂EO11⋅∂O11F22+∂EO12⋅∂O12F22+∂EO21⋅∂O21F22+∂EO22⋅∂O22F22\frac{\partial E}{F_{22}}=\frac{\partial E}{O_{11}}·\frac{\partial O_{11}}{F_{22}}+\frac{\partial E}{O_{12}}·\frac{\partial O_{12}}{F_{22}}+\frac{\partial E}{O_{21}}·\frac{\partial O_{21}}{F_{22}}+\frac{\partial E}{O_{22}}·\frac{\partial O_{22}}{F_{22}}F22∂E=O11∂E⋅F22∂O11+O12∂E⋅F22∂O12+O21∂E⋅F22∂O21+O22∂E⋅F22∂O22
这一些等式也等同于
∂EF11=∂EO11⋅X11+∂EO12⋅X11+∂EO21⋅X11+∂EO22⋅X11\frac{\partial E}{F_{11}}=\frac{\partial E}{O_{11}}·X_{11}+\frac{\partial E}{O_{12}}·X_{11}+\frac{\partial E}{O_{21}}·X_{11}+\frac{\partial E}{O_{22}}·X_{11}F11∂E=O11∂E⋅X11+O12∂E⋅X11+O21∂E⋅X11+O22∂E⋅X11
∂EF12=∂EO11⋅X12+∂EO12⋅X12+∂EO21⋅X12+∂EO22⋅X12\frac{\partial E}{F_{12}}=\frac{\partial E}{O_{11}}·X_{12}+\frac{\partial E}{O_{12}}·X_{12}+\frac{\partial E}{O_{21}}·X_{12}+\frac{\partial E}{O_{22}}·X_{12}F12∂E=O11∂E⋅X12+O12∂E⋅X12+O21∂E⋅X12+O22∂E⋅X12
∂EF21=∂EO11⋅X21+∂EO12⋅X21+∂EO21⋅X21+∂EO22⋅X21\frac{\partial E}{F_{21}}=\frac{\partial E}{O_{11}}·X_{21}+\frac{\partial E}{O_{12}}·X_{21}+\frac{\partial E}{O_{21}}·X_{21}+\frac{\partial E}{O_{22}}·X_{21}F21∂E=O11∂E⋅X21+O12∂E⋅X21+O21∂E⋅X21+O22∂E⋅X21
∂EF22=∂EO11⋅X22+∂EO12⋅X22+∂EO21⋅X22+∂EO22⋅X22\frac{\partial E}{F_{22}}=\frac{\partial E}{O_{11}}·X_{22}+\frac{\partial E}{O_{12}}·X_{22}+\frac{\partial E}{O_{21}}·X_{22}+\frac{\partial E}{O_{22}}·X_{22}F22∂E=O11∂E⋅X22+O12∂E⋅X22+O21∂E⋅X22+O22∂E⋅X22
如果我们仔细看,这个等式可以写成卷积操作的形式:
类似地,我们可以得到输入矩阵 XXX 相对于误差 EEE 的梯度值:
为了得到输入矩阵的梯度∂E/∂X\left. \partial E \middle/ \partial X \right.∂E/∂X,我们需要将卷积核旋转180度,通过输出的误差梯度∂E/∂O\left. \partial E \middle/ \partial O \right.∂E/∂O计算旋转卷积核 FFF 的全卷积,如下图所示。
全卷积可以想象为执行如下图所示的过程。
因此,卷积运算就可以实现卷积层的正向传播和反向传播。
要计算池化层和Relu层的梯度,可以通过使用导数的链式法则来计算。
卷积神经网络CNN的前向和后向传播(一)相关推荐
- 深度学习(四):卷积神经网络(CNN)模型结构,前向传播算法和反向传播算法介绍。
在前面我们讲述了DNN的模型与前向反向传播算法.而在DNN大类中,卷积神经网络(Convolutional Neural Networks,以下简称CNN)是最为成功的DNN特例之一.CNN广泛的应用 ...
- 卷积神经网络(CNN)前向传播算法
在卷积神经网络(CNN)模型结构中,我们对CNN的模型结构做了总结,这里我们就在CNN的模型基础上,看看CNN的前向传播算法是什么样子的.重点会和传统的DNN比较讨论. 1. 回顾CNN的结构 在上一 ...
- 花书+吴恩达深度学习(十三)卷积神经网络 CNN 之运算过程(前向传播、反向传播)
目录 0. 前言 1. 单层卷积网络 2. 各参数维度 3. CNN 前向传播反向传播 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十)卷积神经网络 ...
- 卷积神经网络(CNN)张量(图像)的尺寸和参数计算(深度学习)
卷积神经网络(CNN)张量(图像)的尺寸和参数计算(深度学习) 分享一些公式计算张量(图像)的尺寸,以及卷积神经网络(CNN)中层参数的计算. 以AlexNet网络为例,以下是该网络的参数结构图. A ...
- 卷积神经网络(CNN,ConvNet)
卷积神经网络(CNN,ConvNet) 卷积神经网络(CNN,有时被称为 ConvNet)是很吸引人的.在短时间内,变成了一种颠覆性的技术,打破了从文本.视频到语音等多个领域所有最先进的算法,远远超出 ...
- 一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)
http://blog.itpub.net/29829936/viewspace-2648775/ 2019-06-25 21:31:18 卷积神经网络 – CNN 最擅长的就是图片的处理.它受到人类 ...
- 深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 关于卷积神经网络CNN,网络和文献 ...
- 文本分类(下) | 卷积神经网络(CNN)在文本分类上的应用
正文共3758张图,4张图,预计阅读时间18分钟. 1.简介 原先写过两篇文章,分别介绍了传统机器学习方法在文本分类上的应用以及CNN原理,然后本篇文章结合两篇论文展开,主要讲述下CNN在文本分类上的 ...
- 深度学习之卷积神经网络CNN
转自:https://blog.csdn.net/cxmscb/article/details/71023576 一.CNN的引入 在人工的全连接神经网络中,每相邻两层之间的每个神经元之间都是有边相连 ...
最新文章
- C++ primer记录
- live555 源码分析: SETUP 的处理
- 用shell编写一个三角形图案
- 【计算机就业-算法工程师】校招想去互联网公司担任算法工程师该怎么准备
- 紫书搜索 习题7-4 UVA - 818 Cutting Chains 暴力+dfs判环+位运算
- mysqldump mysql.sock_mysqldump原理及实战
- 关于Pulsar与Kafka的对比
- 用USRP-LW N210搭建软件雷达系统
- WIN10 删除文件 找不到该项目
- 电子元器件的识别与换算
- 数据库设计规范(详细)
- 江苏大学计算机学院换届,关于计算机学院各支部选举结果的批复
- 书中自有黄金屋系列2:读《穷爸爸富爸爸》
- dsp28335 Ecap总结
- 2023年全国最新二级建造师精选真题及答案25
- python批量关键字百度搜索结果url解码
- Idea构建异常---Could not parse metadata xx/xx/maven-metadata-local.xml-删除文件解决不掉---SpringCloud工作笔记176
- java 锁降级 知乎_锁降级
- 盛世昊通微达国际联合出品《天下无拐》,还孩子们一片蓝天
- 让wordpress首页和分类列表页只显示文章标题列表
热门文章
- Flink——有界流VS无界流
- 【电子科学系保研】-- 南方科技大学保研之旅
- 诺基亚 Belle 发布
- 老域名无限挖掘工具(带外链,未注册)
- collector是什么意思中文翻译_collector是什么意思_collector的翻译_音标_读音_用法_例句_爱词霸在线词典...
- win8手动添加linux启动项,Win8下添加开机启动项的简单办法
- reverse(一)——apk逆向
- 微信小程序 实时音视频开发
- NVIDIA 显卡在 Ubuntu 下限制其功率的方法
- 深入理解JUC——AQS 及 ReentrantLock