深度学习(二)神经网络中的卷积和反卷积原理

 原文作者:aircraft

原文地址:https://www.cnblogs.com/DOMLX/p/9579392.html

 

 

深度学习教程目录如下,还在继续更新完善中

深度学习系列教程目录

 

一.卷积

  在深度学习的过程中,很多神经网络都会用到各种卷积核来进行操作,那么我们就简单讲一下卷积的原理和实现过程。

那么卷积在神经网络中的作用是什么呢?一开始的传统神经网络是没有卷积层的,都是隐藏层加生全连接层的结构,这样在中间得到的特征都是线性的,不能提取到一个局部的特征。而卷积神经网络的出现解决了这个问题,通过对一个局部区域进行卷积操作得到这个局部区域的特征值传入下层大大提升了神经网络提取特征的能力,并且还减小了数据的大小。

那么看看卷积的过程:

可以看到这是一个3*3的卷积核在步长为1的方式遍历这个矩阵,卷积核与其遍历的覆盖区域进行一个点乘(其实是协相关)的运算得到一个值存入后面的矩阵,这样通过卷积核与数据矩阵的遍历运算就可以直接提取(局部感受野)一小块区域的特征,而不必像传统神经网络一样一个值一个值的提取。

卷积操作的计算方式如下: 
已知:

  • input size i
  • kernel size k
  • stride s
  • padding size p

则输出大小为: 


卷积计算公式

 

同样的上面这种具有缩放功能的卷积操作,如果这时候我们需要的是跟原来的数据一样大小矩阵传出要怎么做呢?这就是Padding的意义:

可以看到上图输入和输出都是一样大小的矩阵,因为我们在其外围加了一个大小为1 的Padding,这样就可以满足输入输出都是一样的。同理想要扩大或者缩小只要对外围Padding参数根据上面的公式进行调节即可。

 

二.反卷积

  既然有卷积过程那么肯定也有反卷积的过程对不对。不然怎么进行卷积神经网络的反向传导呢?嘿嘿

反卷积通常用于将低维特征映射成高维输入,与卷积操作的作用相反。还是看图比较舒服是吧:

 

上图就是将卷积后的区域,反卷积后变成原来的矩阵,其实看推导看原理肯定是很烦很枯燥的,这里就不细说推导和原理了,那都是(线性代数)里的知识了,我们这里就讲讲怎么反卷积回去。

其实说来一句话就好了。-------对于反卷积过程,采用卷积过程转置后的滤波器(参数一样,只不过把参数矩阵水平和垂直方向翻转了一下),这样反着乘回去就行了。大家好好动笔体会一下这反卷积的神奇。嘿嘿

好了今天得深度学习笔记就到这里了,飞机我得去拿快递了嘿嘿。

 

最后我这是一列的学习笔记,有兴趣入门深度学习的可以看看在下后面的深度学习系列的笔记。

 

参考博客:https://blog.csdn.net/u011447369/article/details/78721574

 

 

若有兴趣交流分享技术,可关注本人公众号,里面会不定期的分享各种编程教程,和共享源码,诸如研究分享关于c/c++,python,前端,后端,opencv,halcon,opengl,机器学习深度学习之类有关于基础编程,图像处理和机器视觉开发的知识

 

posted @ 2018-09-03 16:53  aircraft  阅读(7629)  评论(0编辑  收藏  举报