1. CNN卷积网络初识

1. 前言

卷积神经网络是一种特殊的深层的神经网络模型,它的特殊性体现在两个方面,

  1. 它的神经元间的连接是非全连接的,
  2. 同一层中某些神经元之间的连接的权重是共享的(即相同的)。

它的非全连接和权值共享的网络结构使之更类似于生物 神经网络,降低了网络模型的复杂度(对于很难学习的深层结构来说,这是非常重要的),减少了权值的数量。

2. CNN卷积网络结构

我们先重整体的角度观察一下CNN卷积网络的结构:

上图的结构从左到右是,输入层、卷积层(Convolution Layer)、池化层(Pooling layer)、卷积层、池化层、全连接层(Fully Connected Layer)、全链接层、输出层。

卷积层+池化层的组合可以在隐藏层出现很多次,上图中出现两次。而实际上这个次数是根据模型的需要而来的。当然我们也可以灵活使用使用卷积层+卷积层,或者卷积层+卷积层+池化层的组合,这些在构建模型的时候没有限制。但是最常见的CNN都是若干卷积层+池化层的组合,如上图中的CNN结构。

在若干卷积层+池化层后面是全连接层(Fully Connected Layer, 简称FC),全连接层其实就是我们前面讲的DNN结构,只是输出层使用了Softmax激活函数来做图像识别的分类,这点我们在DNN中也有讲述。

从上面CNN的模型描述可以看出,CNN相对于DNN,比较特殊的是卷积层和池化层,如果我们熟悉DNN,只要把卷积层和池化层的原理搞清楚了,那么搞清楚CNN就容易很多了。

3. 卷积层(Convolution Layer)

卷积层的实现是通过一个卷积核的方式实现的。一个卷积层对应一个卷积核,通过卷积核实现权值共享。

通过一张图我们就能了解卷积层的工作原理。

我们卷积层的输入是[3*4]的矩阵,卷积核是[2*2]的矩阵,输出是[2*3]的矩阵。每一个输出的值都是通过输入层的[2*2]的值和卷积核相乘的和。

再举一个动态的卷积过程的例子如下:

我们有下面这个绿色的5x5输入矩阵,卷积核是一个下面这个黄色的3x3的矩阵。卷积的步幅是一个像素。则卷积的过程如下面的动图。卷积的结果是一个3x3的矩阵。

通过这几个卷积层的例子想必大家对卷积核的计算方式有了一定的了解。

卷积层的公式如下:

\[
s(i,j)=(X*W)(i,j) + b = \sum\limits_{k=1}^{n\_in}(X_k*W_k)(i,j) +b
\]
其中,\(n\_in\)为输入矩阵的个数,或者是张量的最后一维的维数。\(X_k\)代表第\(k\)个输入矩阵。Wk代表卷积核的第k个子卷积核矩阵。\(s(i,j)\)即卷积核W对应的输出矩阵的对应位置元素的值。

卷积层的输出经常加一个激活函数,似的整个网络具有非线性的结构。

4. 池化层(Pooling Layer)

如果说卷积层已经理解了,那池化层久更好理解了。池化层的任务是选出最具代表性的特征,同时缩小数据的维度,使得后面的的网络处理起来更快,效率更高。池化层主要是通过一个过滤器去扫描输入的数据,从每次扫描的过程中生成输出数据。现在池化层主要生成数据的方式有2种

  1. 最大池化层(max pooling layer):max pooling是选择过滤器中最大的那个值。
  2. 平均池化层(average pooling layer):选择过滤器中所有值的平均值作为输出。

介绍了这么多,还不如来张图简明扼要。

5. 总结

在上面提到的卷积层和池化层还有两个概念没有提到。

  1. 步长(stride):stride的意思是过滤器的每次移动的步长,它直接影响最后输出的数据的维度。
  2. padding:padding的意思是给数据周围补0,使得周围的数据和中间的数据权重相同。

了解了stride和padding,我们就能计算出输出的维度:

输入:数据维度为\([W,W]\),Filter大小\([F,F]\),步长\(S\),padding的像素数\(P\),可以得出\([N,N]\)。

\[
N = \frac{W - F + 2P }{S+1}
\]

(欢迎转载,转载请注明出处。欢迎沟通交流: [email protected])

原文地址:https://www.cnblogs.com/huangyc/p/10009778.html

时间: 2024-11-09 15:15:30

1. CNN卷积网络初识的相关文章

用keras作CNN卷积网络书本分类(书本、非书本)

本文介绍如何使用keras作图片分类(2分类与多分类,其实就一个参数的区别...呵呵) 先来看看解决的问题:从一堆图片中分出是不是书本,也就是最终给图片标签上:“书本“.“非书本”,简单吧. 先来看看网络模型,用到了卷积和全连接层,最后套上SOFTMAX算出各自概率,输出ONE-HOT码,主要部件就是这些,下面的nb_classes就是用来控制分类数的,本文是2分类: from keras.models import Sequential from keras.layers.core impor

深度卷积网络CNN与图像语义分割

转载请注明出处: http://xiahouzuoxin.github.io/notes/ 级别1:DL快速上手 级别2:从Caffe着手实践 级别3:读paper,网络Train起来 级别3:Demo跑起来 读一些源码玩玩 熟悉Caffe接口,写Demo这是硬功夫 分析各层Layer输出特征 级别4:何不自己搭个CNN玩玩 级别5:加速吧,GPU编程 关于语义分割的一些其它工作 说好的要笔耕不缀,这开始一边实习一边找工作,还摊上了自己的一点私事困扰,这几个月的东西都没来得及总结一下.这就来记录

CNN卷积神经网络_深度残差网络 ResNet——解决神经网络过深反而引起误差增加的根本问题

from:https://blog.csdn.net/diamonjoy_zone/article/details/70904212 环境:Win8.1 TensorFlow1.0.1 软件:Anaconda3 (集成Python3及开发环境) TensorFlow安装:pip install tensorflow (CPU版) pip install tensorflow-gpu (GPU版) TFLearn安装:pip install tflearn 参考: Deep Residual Le

机器学习-计算机视觉和卷积网络CNN

概述 对于计算机视觉的应用现在是非常广泛的,但是它背后的原理其实非常简单,就是将每一个像素的值pixel输入到一个DNN中,然后让这个神经网络去学习这个模型,最后去应用这个模型就可以了.听起来是不是很简单,其实如果大家深入研究的话,这里面还是有很多内容去学习的,例如:咱们的图片大小可能不一样,同一张图片不同的旋转角度可到的结果可能不一样,如何给咱们的本地图片来label(实际中并不是所有的数据都想mnist那样,谷歌都给咱们label好了,拿来用就行),等等这些问题咱们在实际中肯定都是要用到的.

CNN卷积神经网络新想法

最近一直在看卷积神经网络,想改进改进弄出点新东西来,看了好多论文,写了一篇综述,对深度学习中卷积神经网络有了一些新认识,和大家分享下. 其实卷积神经网络并不是一项新兴的算法,早在上世纪八十年代就已经被提出来,但当时硬件运算能力有限,所以当时只用来识别支票上的手写体数字,并且应用于实际.2006年深度学习的泰斗在<科学>上发表一篇文章,论证了深度结构在特征提取问题上的潜在实力,从而掀起了深度结构研究的浪潮,卷积神经网络作为一种已经存在的.有一定应用经验的深度结构,重新回到人们视线,此时硬件的运算

CNN卷积神经网络学习笔记2:网络结构

在上篇笔记<CNN卷积神经网络学习笔记1:背景介绍>中已经介绍过CNN的结构,这篇笔记中,通过一个简单的CNN的例子,梳理一下CNN的网络结构的细节. 以下是一个6层的CNN网络,这个简单的CNN网络是DeepLearning Toolbox里面CNN的一个例子,后面要通过DeepLearning Toolbox中CNN的代码来进一步理解CNN的整个过程.我们输入的是1张大小为28*28的图片. 需要注意的有: 1,这里输入的是一张图片,如果我们输入了50张图片,那么下图中的每一个方框(代表一

Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN

http://m.blog.csdn.net/blog/wu010555688/24487301 本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep learning简介 [2]Deep Learning训练过程 [3]Deep Learning模型之:CNN卷积神经网络推导和实现 [4]Deep Learning模型之:CNN的反向求导及练习 [5]Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN [6]Deep Learn

【转】Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现

原作者:zouxy09 原文链接:http://blog.csdn.net/zouxy09/article/details/9993371 Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 [email protected] http://blog.csdn.net/zouxy09          自己平时看了一些论文,但老感觉看完过后就会慢慢的淡忘,某一天重新拾起来的时候又好像没有看过一样.所以想习惯地把一些感觉有用的论文中的知识点总结整理一下,一方面在整理过程中,自己

深度卷积网络

深度卷积网络 涉及问题: 1.每个图如何卷积: (1)一个图如何变成几个? (2)卷积核如何选择? 2.节点之间如何连接? 3.S2-C3如何进行分配? 4.16-120全连接如何连接? 5.最后output输出什么形式? ①各个层解释: 我们先要明确一点:每个层有多个Feature Map,每个Feature Map通过一种卷积滤波器提取输入的一种特征,然后每个Feature Map有多个神经元. C1层是一个卷积层(为什么是卷积?卷积运算一个重要的特点就是,通过卷积运算,可以使原信号特征增强