1. 卷积神经网络结构

卷积神经网络是一个多层的神经网络,每层都是一个变换(映射),常用卷积convention变换和pooling池化变换,每种变换都是对输入数据的一种处理,是输入特征的另一种特征表达;每层由多个二维平面组成,每个平面为各层处理后的特征图(feature map)。

常见结构:

输入层为训练数据,即原始数据,网络中的每一个特征提取层(C-层)都紧跟着一个二次提取的计算层(S-层),这种特有的两次特征提取结构使网络在识别时对输入样本有较高的畸变容忍能力。具体C层和S层的个数不确定,依据具体案例而定;最后一个S,即完成了对原始数据的特征提取后,把S层的特征数据进行向量化(vector),然后连接到相应分类器。

一个具有7(输入层+c1+s2+c3+s4+c5+v)层网络结构的字母识别的CNN网络

2  卷积层Convolution作用:

卷积操作:用一个滤波器(就是一个小特征矩阵,也称卷积核)在图像矩阵上游走,在对应位置元素相乘,再把相乘的结果相加,最后相加的结果形成新的图像矩阵,游走完成后即完成了对原始图像的卷积变换(映射变换),形成此滤波器下的特征提取。

C层是一个特征提取层,为什么用卷积运算;卷积运算一个重要的特点就是,通过卷积运算,可以使原信号特征增强,并且降低噪音;例如用增强边缘的卷积去处理图像,处理后的图像边缘特征增强。

3  S层作用:

S-层可看作是模糊滤波器,起到二次特征提取的作用。S层又叫做subsample层,子采样层或者pooling(池化)层

在通过卷积获得了特征 (features)之后,下一步我们希望利用这些特征去做分类。理论上讲,人们可以用所有提取得到的特征去训练分类器,例如 softmax分类器,但这样做面临计算量的挑战。例如:对于一个 96X96像素的图像,假设我们已经学习得到了400个定义在8X8输入上的特征,每一个特征和图像卷积都会得到一个 (96 − 8 + 1) * (96 − 8 + 1) = 7921 维的卷积特征,由于有 400个特征,所以每个样例 (example)都会得到一个 892 *400 = 3,168,400维的卷积特征向量。学习一

个拥有超过 3百万特征输入的分类器十分不便,并且容易出现过拟合 (over-fitting)。

为了解决这个问题,首先回忆一下,我们之所以决定使用卷积后的特征是因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在另一个区域同样适用。因此,为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平均值 (或最大值)。这些概要统计特征不仅具有低得多的维度 (相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。这种聚合的操作就叫做池化 (pooling),有时也称为平均池化或者最大池化 (取决于计算池化的方法)。

4  网络的前馈计算:

4.1C层卷积计算:

用一个可训练的滤波器kij去卷积一个输入的图像(第一阶段是输入的图像,后面的阶段就是S层的结果特征map了),然后加一个偏置bx,得到卷积层Cx

假设层为s层特征图像Xil-1(pooling层),l层为卷积C层,卷积结果为Xjl

参数kij为两层间卷积核(滤波器,kernals),由于s层有m个特征,c层有n个特征,所以一共有m*n个卷积核。bj为卷基层每个结果特征对应的一个偏置项bias,f为非线性变换函数sigmoid函数;Mj为选择s层特征输入的个数,即选择多少个s层的图像特征作为输入;由于选择s层的特征个数方法不同,主要分为三种卷积选择方式

1、全部选择:

s层的全部特征都作为输入, Mj=m。如上图所示。

2、自动稀疏选择:

在卷积计算前加入稀疏稀疏aij,通过稀疏规则限制(论文后面),使算法自动选取部分s层特征作为输入,具体个数不确定。

3、部分选择:

按照一定的规则,固定的选取2个或者3个作为输入。

卷积结果特征图像大小计算:

假设输入特征图Feature Map大小为28*28。卷积核大小5*5。

卷积后特征图大小size(Cx)=(28-5+1,28-5+1)

Ps:卷积计算相当于神经网络中的前馈计算sigmoid(W*X+b),卷积核kij相当于系数矩阵W的一部分小切片,b为偏置项,详细介绍见上一篇博客:卷积Convolution和池化pooling特征提取,分类

卷积核kernals的来源:

1,随机初始化;2,用linear sparseautoencoder进行非监督特征学习,学习特征卷积

4.2 S层计算:

Pooling池化计算主要分为均值池化,最大值池化等,有的算法还在此话后进行sigmoid非线性变换;

直接均值池化

进行非线性变换池化

down(Xjl-1)表示下采样操作,就是对一个小区域进行pooling操作,使数据降维。

5.网络的反向传播:

 

可以先参考 :Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现了解一下cnn网络的前馈计算和误差反向传播的过程;之后再看Deep Learning论文笔记之(五)CNN卷积神经网络代码理解。

两个版本的cnn代码:

1,Deep learning:五十一(CNN的反向求导及练习)次cnn网络比较简单,而且感觉设计上面有些问题,cnn是为了提取特征来降低原始数据的,最后这个网络反而把数据量变大了,但是作为代码联系还是挺好的,网络简单,讲解详细。在此感谢tornadomeet

2,Deep Learning论文笔记之(五)CNN卷积神经网络代码理解,此matlabdeeplearning toolbox中的代码,相比1中的代码,这个代码感觉标准了许多,采用栈式编程,用栈(matlab中的元包矩阵)来构架整个网络,显得结构紧凑,规整。(个人见解)。

转载于:https://www.cnblogs.com/fuleying/p/4716567.html

卷积神经网络CNN介绍:结构框架,源码理解【转】相关推荐

  1. 【图像识别】基于卷积神经网络(CNN)实现垃圾分类Matlab源码

    1 模型介绍 模型参考这里. 2 部分代码 function varargout = cnnMain(varargin) gui_Singleton = 1; gui_State = struct(' ...

  2. 深度学习(四):卷积神经网络(CNN)模型结构,前向传播算法和反向传播算法介绍。

    在前面我们讲述了DNN的模型与前向反向传播算法.而在DNN大类中,卷积神经网络(Convolutional Neural Networks,以下简称CNN)是最为成功的DNN特例之一.CNN广泛的应用 ...

  3. 机器学习之卷积神经网络--CNN介绍

    卷积神经网络–CNN 1. 卷积神经网络介绍 卷积神经网络(Convolutional Neural Networks,CNN)是一种包 含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之 ...

  4. 卷积神经网络(CNN)介绍与实践

    七月 上海 | 高性能计算之GPU CUDA培训 7月27-29日三天密集式学习  快速带你入门阅读全文> 正文共4499个字,26张图,预计阅读时间18分钟. CNN的前世今世 1.1.大脑 ...

  5. 卷积神经网络(CNN)介绍

    简单介绍和总结卷积神经网络(Convolutional Neural Networks)的基本组成网络层和常用的网络结构. 参考文章/书籍: An Intuitive Explanation of C ...

  6. 卷积神经网络(CNN)模型结构

    在前面我们讲述了DNN的模型与前向反向传播算法.而在DNN大类中,卷积神经网络(Convolutional Neural Networks,以下简称CNN)是最为成功的DNN特例之一.CNN广泛的应用 ...

  7. 深度学习之卷积神经网络CNN

    转自:https://blog.csdn.net/cxmscb/article/details/71023576 一.CNN的引入 在人工的全连接神经网络中,每相邻两层之间的每个神经元之间都是有边相连 ...

  8. 【图像识别】基于卷积神经网络CNN手写数字识别matlab代码

    1 简介 针对传统手写数字的随机性,无规律性等问题,为了提高手写数字识别的检测准确性,本文在研究手写数字区域特点的基础上,提出了一种新的手写数字识别检测方法.首先,对采集的手写数字图像进行预处理,由于 ...

  9. 【从线性回归到 卷积神经网络CNN 循环神经网络RNN Pytorch 学习笔记 目录整合 源码解读 B站刘二大人 绪论(0/10)】

    深度学习 Pytorch 学习笔记 目录整合 数学推导与源码详解 B站刘二大人 目录传送门: 线性模型 Linear-Model 数学原理分析以及源码详解 深度学习 Pytorch笔记 B站刘二大人( ...

最新文章

  1. Netty系列之一开始使用
  2. 笔记-项目进度管理-精简
  3. react项目启动invalid host header问题
  4. 胶囊路由_评论:胶囊之间的动态路由
  5. C——Flowers
  6. 计算机word基本知识选择题,2017计算机基础考试选择题「附答案」
  7. 织梦服务器系统win10,WIN服务器爆破DEDECMS后台目录
  8. cloudsim样例描述
  9. 质数分布是否随机关乎安全大事
  10. webmin mysql_MySQL+Webmin轻松创建数据库
  11. RPC框架设计概要-性能
  12. Glide4.0 centerCrop属性和圆角 冲突
  13. Sql server中 如何用sql语句创建视图
  14. timesten mysql_timesten:TT0802错误
  15. python 谷歌翻译接口_使用python调用谷歌翻译接口实现英文到中文的翻译
  16. php商城添加加入购物车,php添加购物车,php购物车
  17. UVa 10827 - Maximum sum on a torus
  18. win10计算机网线直联,教你win10两台电脑网线直连传输文件的方法
  19. new new Foo().getName()面试题解析
  20. Aquarius 水瓶

热门文章

  1. 题目1198:a+b
  2. 2015-04-11一些知识点
  3. F# 与 WPF 之多语言实现MVVM(二)
  4. 【古典入门】巴洛克音乐家-斯卡拉蒂
  5. python获取html文本框内容_Python3处理HTML获取所需内容
  6. 湖南高校教师评职称计算机等级考试,湖南高校教师职称评审出台新规,这些要点你了解了吗?...
  7. 【Python】eval+random库+字符串转列表+列表转字符串
  8. 数值计算方法(六)——迭代法求解线性方程组
  9. Netfilter分析
  10. mysql建立修改表存储过程_MySQL数据库创建、表的创建、存储过程、触发器