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

 原文做者:aircrafthtml

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

 

 

 

一.卷积python

  在深度学习的过程当中,不少神经网络都会用到各类卷积核来进行操做,那么咱们就简单讲一下卷积的原理和实现过程。c++

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

那么看看卷积的过程:后端

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

卷积操做的计算方式以下: 
已知:
机器学习

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

则输出大小为: 
ide


卷积计算公式

 

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

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

 

二.反卷积

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

反卷积一般用于将低维特征映射成高维输入,与卷积操做的做用相反。仍是看图比较舒服是吧:

 

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

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

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

 

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

 

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

 

 

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

 

相关文章
相关标签/搜索