精华内容
下载资源
问答
  • 与常规的神经网络不同,ConvNet的神经元是三维排列的。 输入层 卷积层 非线性变换层 池化层 全连接层 感受野: 卷积核尺寸 局部连接 参数共享 feature map = filter = neuron 卷积层参数——Stride 卷积操作后,...

    写在前面

    回顾上一节课,我们明白,每个神经元做的工作就是 Wx+b , 那么每个神经元的W的尺寸就是:
    卷积核尺寸*图像深度。

    卷积网络的结构

    与常规的神经网络不同,ConvNet的神经元是三维排列的。

    输入层
    卷积层
    非线性变换层
    池化层
    全连接层,就是普通的神经网络,输出层,隐含层,输出层

    常见名词
    • 感受野receptive field: 卷积核尺寸
    • 局部连接
    • 参数共享
    • feature map = filter = neuron
    • Sride 步长

    卷积操作后,图像尺寸减小,假设卷积模板F * F,输入图像尺寸N*N,则输出尺寸**(N-F)/Stride + 1**,当然必须为整数,不然说明卷积核尺寸有问题。

    • 神经元参数个数,即权重矩阵W的元素个数

    假设A个F * F卷积核,输入图像RGB三通道,则参数个数为 F * F * 3 *A

    • 卷积层输出尺寸(0 padding)

    ((N-F)/Stride + 1) * ((N-F)/Stride + 1) * A

    • 卷积层输出尺寸(P padding)

    ((N-F+2P)/Stride + 1) * ((N-F+2P)/Stride + 1) * A
    卷积层输出体积不考虑通道数,输出的深度是卷积核个数;但是神经元参数是把通道数考虑进去的

    池化操作Pool Operation

    池化操作是周期地在连接的池化层之间插入池化层,以渐进地(progressively)减少空间尺寸、参数数量、计算量,因此也控制了overfitting。

    池化层不会改变通道数量,只会改变长和宽

    4x4经过2x2最大池化层,(4-2)/2+1=2,则输出2x2
    max operation指的是每个新的像素取filter区域的最大值
    Layer Patterns

    在这里插入图片描述

    在这里插入图片描述

    最后一个卷积层和第一个全连接层之间占据了整个net的大部分参数,参数个数为13x13x256x4096。因此,在conv5和fc6之间会加一个最大池化层,且最大化池化层为13x13, 这样conv5经过 13x13 池化层之后,输出1x1x256,然后再和全连接层fc6连接。 ——这叫全局池化层

    fc6 fc7 fc8 就是普通的神经网络,fc6是输入层,fc7是隐含层,fc8是输出层。fc6可以认为是5个卷积层提取完卷积特征输出的结果。前面5个卷积层就是在做 特征提取feature extraction

    如果卷积层做的特别好,那么全连接层可以换成SVM,效果也可以。

    可以这么看,深度卷积神经网络前半部分在做卷积层的特征提取,后面在做分类器

    Problem Analysis

    当模型参数数量远远小于样本数量时,我们可能产生overfitting。

    迁移学习 Transfer Learning

    迁移学习,即微调fine-tune 预训练网络的权重Pretrained weights

    当目标任务和源任务比较接近时,数据量比较小时。可以选择迁移学习。

    比如我们原始训练的模型分1000类,现在分10类。迁移学习方式:

    1. 把最后一层换掉,训练最后一层
      在这里插入图片描述

    2. 往前推,训练最后两层
      在这里插入图片描述

    3. 往前推,训练最后三层

      n. 直至训练整个网络

    Code
    1. 设置参数
    2. 建立网络,包括Pretrained weights,然后更改最后一层
    3. 数据扩增
    • 训练集会做数据扩增
    • 验证集一般不会做数据扩增,不然不知道结果的好坏是由参数的原因还是验证集的变化引起的。
    1. 网络训练
      包括样本数、轮次
    Trick
    • Average Multiple Testing Results with a Single Model
      比如对一张测试图片输出结果是一头牛,那么将这张图片旋转后我们还是希望结果是一头牛。所以,测试多张变换后的图片,看看大多数的结果是哪个,把多次结果的平均作为最终结果。
    • 交叉验证
      把训练数据随机打乱,取一份作为测试集。
      比如下面训练5个模型,相当于有5个人帮你指认结果,更加准确。
      在这里插入图片描述
    • 用不同的训练参数。数据增强,初始化等等。
    • 可以结合Trick1和Trick2,既用数据扩增对一张验证图片做10次测试,也用交叉验证训练5个模型,那么就有50个结果。相当于有50个人帮你指认。
    展开全文
  • 深度学习——卷积神经网络原理解析

    千次阅读 多人点赞 2019-03-15 17:02:02
    深度学习——卷积神经网络原理解析 文章目录深度学习——卷积神经网络原理解析前言一、卷积?神经网络?二、卷积神经网络?三、卷积神经网络的组成层四、卷积层五、池化层六、全连接层七、卷积神经网络的经验参数...

    深度学习——卷积神经网络原理解析

    前言

    卷积神经网络可有效的运用在计算机视觉的经典任务中,例如目标检测、人脸识别等,所以,在进行这些任务时,多半都要运用到这些知识,例如卷积层是如何操作的,池化的方式有哪些,全连接层又是什么等等等等。所以今天在此总结了下CNN的相关知识,以便今后复习。

    一、卷积?神经网络?

    • 卷积:你可以把卷积想象成一种混合信息的手段。想象一下装满信息的两个桶,我们把它们倒入一个桶中并且通过某种规则搅拌搅拌。也就是说卷积是一种混合两种信息的流程。你可以将它理解,它就是一种数学运算,跟减加乘除没有本质的区别。
    • 神经网络:

    二、卷积神经网络?

    卷积神经网络的英文名为Convolutional Neural Network,在论文通常简写为CNN。CNN可以应用在场景分类,图像分类,现在还可以应用到自然语言处理(NLP)方面的很多问题,比如句子分类等。卷积神经网络是一种带有卷积结构的深度神经网络,是一种专门用来处理类似网格结构的数据的神经网络,比如图像数据。首先要明白一个很基础的概念,一张图片肉眼看就是一张图片,但对于计算机来说,他看到的就是矩阵,就是一大堆数字,比如一张彩色的图片,对于计算机来说,就是具有三个通道(RGB)的矩阵。图像是像素值的矩阵。

    三、卷积神经网络的组成层

    • 输入层
    • 卷积层
    • 激活函数层
    • 池化层
    • 全连接层

    输入层主要包含对原始图像进行预处理,包括白化、归一化、去均值等等。详细讲解数据预处理可参考我的这篇博客

    卷积运算层主要使用滤波器(卷积核),通过设定步长、深度等参数,对输入进行不同层次的特征提取。滤波器中的参数可以通过反向传播算法进行学习。

    激活函数层主要是将卷积层的输出做一个非线性映射。常见的激活函数包括sigmoid,tanh,Relu等。详细讲解常用的激活函数可参考我的这篇博客

    池化层主要是用于参数量压缩。可以减轻过拟合情况。常见的有平均池化和最大值池化,不包含需要学习的参数。

    全连接层主要是指两层网络,所有神经元之间都有权重连接。常见用于网络的最后一层,用于计算类别得分。

    接下来主要讲解卷积层、池化层、全连接层,其余两层在上面均有相应的博客链接。大家可以自行阅读。

    四、卷积层

    卷积层进行的运算就叫做卷积运算,在这一部分内容中,我们主要是理解卷积是如何计算的,怎样一步一步的由原始的输入到卷积运算后的输出。当然,为了后面更好理解,先得把几个涉及到的概念讲清楚,不然后面都不知道这是干嘛的:

    • 滤波器==卷积核(Kernel Size),尺寸通常为3×3×c,也有1×1×c,7×7×c等,注意,这里的c和这层的输出的通道是一样的,比如224×224×3的图像,用3×3×c的卷积,那么这里的c就是3

    • 步长(stride),卷积核运算后,滑几步到下一次,一般设置为1,2,3……若 步长 stride=1,就往右平移一个像素。

    • 边缘填充(padding),用于填充输入图像的边界,就是在矩阵最外围"再裹一层",如下图所示:
      在这里插入图片描述

    那么卷积层到底是怎么计算的呢?简而言之就是四个字:相乘相加。在卷积层中,计算输入图像的区域和滤波器的权重矩阵之间的点积,并将其结果作为该层的输出。滤波器将滑过整个图像,重复相同的点积运算。如下图所示:

    左图为输入,中间图为卷积核,右图为卷积运算输出。可以明显的看出就是一个相乘相加的操作。举个带数字的例子,可以动手算一算,如下图所示:

    就拿这个有数字的在详细看下,在这里,输入图像的大小5×5,卷积核的大小为3×3,输出的特征图大小为3×3,步长为1,padding为0。

    上面所讲述的两张动图都只是二维卷积,但实际上很多网络的输入是一张RGB三通道的彩色图像,所以如果卷积核是二维的话,就没办法进行卷积运算了,也就是说,输入图像多了一个通道,所以我们的卷积核也要多一个维度,比如下面这幅图:

    上面这幅图中,输入为8×8×3,卷积核为3×3×3,用了四个,得到的输出为6×6×4的特征图。

    那么难道每次我得到输入,得到卷积核,要画图才能算出最后的输出么?不必担心,计算最后的输出有个公式如下:

    N: 输入的维度、F:卷积核大小、stride: 步长、pad: 扩充边缘
    output=N+2×padFstride+1output output=\frac{(N+2×pad-F)}{stride}+1\\ 当output不是一个整数时就向下取整
    那么,卷积为什么有效呢?

    简单来说,训练CNN在相当意义上是在训练每一个卷积层的滤波器。让这些滤波器对特定的模式有高的激活,以达到CNN网络的分类或检测等目的。
    卷积神经网络的第一个卷积层的滤波器用来检测低阶特征,比如边、角、曲线等。随着卷积层的增加,对应滤波器检测的特征就更加复杂。比如第二个卷积层的输入实际上是第一层的输出,这一层的滤波器是用来接触低阶特征的组合等情况(半圆、四边形)等,如此累积,以检测越来越复杂的特征。
    所以,在某种意义上,构建卷积神经网络的任务在于构建这些滤波器。也就是,将这些滤波器变成这样(改变滤波器矩阵的值,也就是Weight)---- 能识别特定的特征。这个过程叫做训练。

    其次,卷积核里面的值是如何定义的呢?

    在训练开始之时,卷积层的滤波器完全是随机的,也就是进行随机初始化,他们不会有任何特征激活。把一个空白的滤波器,通过反向传播修改其权重(weights)使他能检测特定的模式,整个过程就像工程的反馈机制。

    五、池化层

    **池化主要分为平均池化(mean pooling)和最大池化(max pooling)。**池化层夹在连续的卷积层中间, 用于压缩数据和参数的量,减小过拟合。简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像,减小图像的分辨率。具体如下:

    1. 特征不变性。池化操作就是图像的resize,平时一张狗的图像被缩小了一倍我们还能认出这是一张狗的照片,这说明这张图像中仍保留着狗最重要的特征,我们一看就能判断图像中画的是一只狗,图像压缩时去掉的信息只是一些无关紧要的信息,而留下的信息则是具有尺度不变性的特征,是最能表达图像的特征。

    2. 特征降维。我们知道一幅图像含有的信息是很大的,特征也很多,但是有些信息对于我们做图像任务时没有太多用途或者有重复,我们可以把这类冗余信息去除,把最重要的特征抽取出来,这也是池化操作的一大作用。

    3. 在一定程度上防止过拟合,更方便优化。

    举个例子:

    输入为4×4的矩阵,用到的池化类型是最大池化(max pooling),输出结果是一个2×2的矩阵:

    来看执行过程:把4×4的矩阵分成不同的区域,如图中的四种颜色区域,对于2×2的输出,输出的每个元素都是其对应颜色区域中的最大元素值。如下图所示。我们可以把这4×4的区域看成是某些特征的集合。

    还有一种池化叫平均池化,选取的不是过滤器的最大值,而是平均值:

    超级参数的常用值:f=2;s=2效果相当于高度和宽度缩减一半。最大池化时,往往很少用到padding。

    六、全连接层

    在卷积神经网络的最后,往往会出现一两层全连接层,之前的卷积层、池化层和激活函数层等作用是将原始数据映射到隐层特征空间中,而全连接层的目的是将网络学习到的特征映射到样本的标记空间中。全连接层会把卷积输出的二维特征图(feature Map)转化成一个一维的向量。全连接层的每一个结点都与上一层的所有结点相连,用来把前边提取到的特征综合起来。由于其全相连的特性,一般全连接层的参数也是最多的。这一过程具体实现如下所述:

    最后的两列小圆球就是两个全连接层,在最后一层卷积结束后,进行了最后一次池化,输出了20个12×12的图像,然后通过了一个全连接层变成了100×1的向量。是怎么变的呢?具体过程可以这么理解:对于这个20个12×12的图像,我们给他100个12×12×20的卷积核进行卷积,那么每个卷积核卷积的输出结果就是一个数字了,那么总共有100个这样的数字,所以最后的输出结果就是100×1的向量。

    全连接层的特征数特别多,计算量比较大。上述例子中卷积层包含参数个数12×12×20×100个。总之,卷积池化就是在不断的提取特征,而全连接的作用就是分类。

    七、卷积神经网络的经验参数设置

    对于卷积神经网络的参数设置,没有很明确的指导原则,详细内容可以看我的这篇博客

    1. learning-rate 学习率:学习率越小,模型收敛花费的时间就越长,但是可以逐步稳健的提高模型精确度。一般初始设置为0.1,然后每次除以0.2或者0.5来改进,得到最终值;
    2. batch_size 样本批次容量:影响模型的优化程度和收敛速度,需要参考你的数据集大小来设置,具体问题具体分析,一般使用32或64,在计算资源允许的情况下,可以使用大batch进行训练。有论文提出,大batch可以加速训练速度,并取得更鲁棒的结果;
    3. weight-decay 权重衰减:用来在反向传播中更新权重和偏置,一般设置为0.005或0.001;
    4. epoch 训练次数:包括所有训练样本的一个正向传递和一个反向传递,训练至模型收敛即可;(注:和迭代次数iteration不一样)
      总之,不是训练的次数越多,测试精度就会越高。会有各种原因导致过拟合,比如一种可能是预训练的模型太复杂,而使用的数据集样本数量太少,种类太单一。

    八、References

    展开全文
  • 本书从实用角度着重解析了深度学习中的一类神经网络模型——卷积神经网络,向读者剖析了卷积神经网络的基本部件与工作机理,更重要的是系统性的介绍了深度卷积神经网络在实践应用方面的细节配置与工程经验。...
  • 深度学习】卷积神经网络原理

    千次阅读 2018-07-03 20:22:59
    卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一...其核心主要是“卷积与池化”接下来我将介绍卷积神经网络进行特征提取的原理 1、基本概念 对比普通的神经网...

    http://cs231n.github.io/convolutional-networks/#pool

    卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,长期制霸计算机视觉领域。其核心主要是“卷积与池化”接下来我将介绍卷积神经网络进行特征提取的原理

    1、基本概念

    对比普通的神经网络,卷积神经网络包含了由 卷积层 和 池化层 构成的特征提取器。在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元连接。而不会像神经网络一样全连接
    这里写图片描述
    在CNN的一个卷积层中,通常包含若干个特征平面(featureMap),每个特征平面由一些矩形排列的的神经元组成,同一特征平面的神经元共享权值,这里共享的权值就是卷积核。卷积核一般以随机小数矩阵的形式初始化,在网络的训练过程中卷积核将学习得到合理的权值。共享权值(卷积核)带来的直接好处是减少网络各层之间的连接,同时又降低了过拟合的风险。子采样也叫做池化(pooling),通常有均值子采样(mean pooling)和最大值子采样(max pooling)两种形式。子采样可以看作一种特殊的卷积过程。卷积和子采样大大简化了模型复杂度,减少了模型的参数。
    网络结构主要包含以下层次

    • 输入层/input layer
    • 卷积层/conv layer
    • Relu激励层/Relu layer
    • 池化层/Pooling layer
    • 全连接层/FC layer
    • Batch normalization层(可能存在)/BN layer

    这里写图片描述

    1.1、卷积层

    卷积层是构建卷积神经网络的核心层,它产生了网络中大部分的计算量。举例说明,我们人脑看一张图片的时候其实在背后有着不同的神经元共同工作使得我们的大脑得以理解的,每个神经元都不一样有的对方块敏感,有的对圆形敏感。我们就可以把这个神经元看做我们的滤波器 filter 也叫卷积核 kernel,在我们的卷积神经网络中就是通过这写 filter 进行图片识别的。

    这里写图片描述

    • 局部连接 :在处理图像这样的高维度输入时,让每个神经元都与前一层中的所有神经元进行全连接是不现实的。所以那就让每个神经元与只其中一部分相连接。该连接的空间大小叫做神经元的感受野(receptivefield),它的尺寸是一个超参数(其实就是滤波器的空间尺寸)。在深度方向上,这个连接的大小总是和输入量的深度相等。
    • 深度:卷积之后输出数据体的深度是一个超参数,他和滤波器filter的数量一致,这也就是为什么与神经网络相比卷积网络变成立体的原因。
    • 步长:在滑动滤波器的时候,步长为每次滑动的像素,常用1和2,步长会导致输出的数据体在空间上变小。
    • 零填充:也就是padding 就是在输入数据体的边缘上使用0补充大小,使用零填充可以有效地控制输出数据体的尺寸。
    • 权重共享:每个神经元连接窗口的权重都是一样的,因为就像我之前所说每个神经元只负责提取特定的特征,只认识直线或者弧线等。否则的话由于图片转移成矩阵之后,很多参数在经过卷积之后就变得更庞大了,而且还只是一层,这也是为什么CNN训练会消耗很多资源的原因。

    在前向传播的时候,让每个滤波器都在输入数据的宽度和高度上滑动(更精确地说是卷积),然后计算整个滤波器和输入数据任一处的内积。当滤波器沿着输入数据的宽度和高度滑过后,会生成一个2维的激活图(activation map),激活图给出了在每个空间位置处滤波器的反应。
    可查看动态图
    这里写图片描述

    接下来给出卷积层超参数设置规律

    • 输入数据体大小为 W1×H1×D1
    • 滤波器数量 K; 滤波器大小 F ;步长 S ;零填充 P
    • 输出数据体的尺寸为
      • W2=(W1F+2P)/S+1
      • H2=(H1F+2P)/S+1
      • D2=K

    1.2、池化层

    在连续的卷积层之间用来压缩数据和参数的量,使得计算资源耗费变少,也能有效控制过拟合。
    这里写图片描述
    通常使用Max pooling 最大池化,当然也存在 average pooling 平均池化等其他池化方式
    这里写图片描述

    1.3、激励层

    把卷积层输出结果做非线性映射
    这里写图片描述

    1.4、 全连接层 / FC layer

    这里没什么说的,在全连接层中,神经元对于前一层中的所有激活数据是全部连接的,这个常规神经网络中一样。它们的激活可以先用矩阵乘法,再加上偏置。

    1.5、 层级排列规律

    • INPUT 输入层
    • [[CONV -> RELU]*N -> POOL?]*M 多次卷积接一个池化层
    • [FC -> RELU]*K 全连接层
    • FC 全连接层输出其中

    *指的是重复次数,POOL?指的是一个可选的汇聚层。其中N >=0,通常N<=3,M>=0,K>=0,通常K<3

    2、应用场景

    卷积神经网络因为其对图像的特征提取的特点被广泛应用

    • 被用于OCR文字识别领域,最简单的就是mnist手写体识别,本片末尾我将根据上篇神经网络为例,使用卷积神经网络重新建立模型进行手写体识别
    • 图片分类:Alex Krizhevsky等人2012年的文章“ImageNet classification with deep convolutional neural networks”对ImageNet的一个子数据集进行了分类。ImageNet一共包含1500万张有标记的高分辨率图像,包含22,000个种类。这些图像是从网络上搜集的并且由人工进行标记。从2010年开始,有一个ImageNet的图像识别竞赛叫做ILSVRC(ImageNet Large-Scale Visual Recognition Challenge)。 ILSVRC使用了ImageNet中的1000种图像,每一种大约包含1000个图像。总共有120万张训练图像,5万张验证图像(validation images)和15万张测试图像(testing images)。
    • 文本分类:卷积神经网络不仅可以识别图像,因为其独特的网络结构使得他也可以被应用于文本分类
    • AlphaGo:DeepMind所研究的AlphaGo使用了卷积神经网络来学习人类下棋的方法,最终取得了突破。AlphaGo在没有任何让子的情况下以5:0完胜欧洲冠军,职业围棋二段樊麾。研究者也让AlphaGo和其他的围棋AI进行了较量,在总计495局中只输了一局,胜率是99.8%。它甚至尝试了让4子对阵Crazy Stone,Zen和Pachi三个先进的AI,胜率分别是77%,86%和99%。

    3、代码实现

    仍然使用mnist手写体作为例子(tensorflow官网同款,因为只是讲解原理所以找的例子没有很复杂),因为是图片识别,使用CNN后对图片识别的准确率会上升,优于传统的神经网络。

    卷积神经网络发展至今已经产生了很多nb的研究成果(VGG、盗梦空间、ResNEt等),我会在接下来的博客中介绍,同时也会使用CNN做一个有趣的应用。

    import tensorflow as tf
    
    from tensorflow.examples.tutorials.mnist import input_data
    mnist = input_data.read_data_sets("input_data/", one_hot=True)
    
    # 定义超参数
    learning_rate = 1e-4
    epochs = 3000
    batch_size = 50
    input_size = 784
    class_num = 10
    dropout = 0.25
    
    weights = {
        # 5x5 卷积 1 输入, 32 输出
        'wc1': tf.Variable(tf.random_normal([3, 3, 1, 64])),
        # 5x5 卷积, 32 输入, 64 输出
        'wc2': tf.Variable(tf.random_normal([3, 3, 64, 128])),
        # 全连接, 7*7*64 输入, 1024 输出
        'wd1': tf.Variable(tf.random_normal([7*7*128, 1024])),
        # 1024 输入, 10 输出
        'out': tf.Variable(tf.random_normal([1024, class_num]))
    }
    
    biases = {
        'bc1': tf.Variable(tf.random_normal([64])),
        'bc2': tf.Variable(tf.random_normal([128])),
        'bd1': tf.Variable(tf.random_normal([1024])),
        'out': tf.Variable(tf.random_normal([class_num]))
    }
    
    
    # 定义卷积操作
    def conv2d(x, W, b, strides=1):
        x = tf.nn.conv2d(x, W, strides=[1, strides, strides, 1], padding='SAME')
        x = tf.nn.bias_add(x,b)
        return tf.nn.relu(x)
    
    
    # 定义池化下采样操作
    def max_pooling2d(x, k=2):
        return tf.nn.max_pool(x, ksize=[1, k, k, 1], strides=[1, k, k, 1], padding='SAME')
    
    
    # 卷积网络
    def conv_basic(input):
        x = tf.reshape(input, shape=[-1, 28, 28, 1])
        conv_1 = conv2d(x, weights['wc1'], biases['bc1'])
        conv_1 = max_pooling2d(conv_1, k=2)
        conv_2 = conv2d(conv_1, weights['wc2'], biases['bc2'])
        conv_2 = max_pooling2d(conv_2, k=2)
        dense = tf.reshape(conv_2, shape=[-1, weights['wd1'].get_shape().as_list()[0]])
        fc_1 = tf.nn.relu(tf.add(tf.matmul(dense, weights['wd1']), biases['bd1']))
        fc_1 = tf.nn.dropout(fc_1, dropout)
        out = tf.add(tf.matmul(fc_1, weights['out']), biases['out'])
        out = tf.nn.softmax(out)
        return out
    
    
    # 定义输入占位符
    X = tf.placeholder(tf.float32, shape=[None, input_size])
    Y = tf.placeholder(tf.float32, shape=[None, class_num])
    keep_prob = tf.placeholder(tf.float32)
    
    logits = conv_basic(X)
    pred = tf.nn.softmax(logits)
    
    loss = -tf.reduce_sum(Y*tf.log(pred))
    optimizer = tf.train.AdamOptimizer(learning_rate).minimize(loss)
    
    correct_pred = tf.equal(tf.argmax(pred, 1), tf.argmax(Y, 1))
    accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))
    init = tf.global_variables_initializer()
    
    with tf.Session() as sess:
        sess.run(init)
        saver = tf.train.Saver()
        for epoch in range(1, epochs+1):
            batch_x, batch_y = mnist.train.next_batch(batch_size)
            sess.run(optimizer, feed_dict={X: batch_x, Y: batch_y,  keep_prob: 0.5})
            if epoch % 100 == 0 or epoch == 1:
                train_accuracy = sess.run(accuracy, feed_dict={X: batch_x, Y: batch_y, keep_prob: 1.0})
                print("step {} training accuracy {}".format(epoch, train_accuracy))
        saver.save(sess, "./model/cnn_mnist.ckpt")
        print("训练结束!")
    展开全文
  • 目录 2.0 卷积神经网络简述 2.1 二维卷积层 2.1.1. 二维互相关运算 2.1.2. 图像中物体边缘检测 ...2.0 卷积神经网络简述 ...本章将介绍卷积神经网络。...我们将先描述卷积神经网络中卷积层和池化层的工作原理...
  • 深度学习——卷积神经网络原理解析(Convolution layer) 简介 卷积主要应用于计算机视觉领域,经常用于特征的提取、目标检测、人脸检测与识别等任务。卷积是同于一系列加乘法运算完成,核心是卷积核(filter),还有...
  • VGG卷积神经网络 一.背景 ILSVRC 2014的第二名是Karen Simonyan和 Andrew Zisserman实现的卷积神经网络,现在称其为VGGNet。它主要的贡献是展示出网络的深度是算法优良性能的关键部分。 他们最好的网络包含了16个...
  • 初探CNN卷积神经网络 1、概述 典型的深度学习模型就是很深层的神经网络,包含多个隐含层,多隐层的神经网络很难直接使用BP算法进行直接训练,因为反向传播误差时往往会发散,很难收敛 CNN节省训练开销的方式是权...
  • 卷积神经网络原理简介

    千次阅读 2019-06-13 11:02:34
    卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一。 卷积神经网络具有表征学习...
  • 深度学习】5:CNN卷积神经网络原理

    万次阅读 多人点赞 2018-01-29 10:58:16
    前言:先坦白的说,深度神经网络的学习...这篇CNN卷积神经网络原理介绍,也是自己通过收集来的资料阅读、理解、操练后,有了一定的见解后才拙笔,里面的内容我会尽量详尽,不清楚明白的地方,望大家慧眼指出。 –—
  • 卷积神经网络原理

    2020-02-28 20:05:49
    卷积神经网络 (Convolutional Neural Nework, CNN)是受生物学上感受野机制的启发而提出的深度学习模型,在图像处理中较为常见,下面我们依次介绍各种层的结构和作用,并给出实现的代码。 一、从图像到矩阵 每张图片...
  • 深度卷积神经网络以多层次的特征学习与丰富的特征表达能力,在目标检测领域取得了突破进展。概括了卷积神经网络在目标检测领域的研究进展,首先回顾传统目标检测的发展及存在的问题,引出卷积神经网络的目标检测基本...
  • AlexNet卷积神经网络 一.背景介绍 (图片来自网络) lexNet 经常被认为是这一波人工智能浪潮的起点,该网络在 ImageNet 挑战赛中的错误率与前一届冠军相比减小了 10% 以上,比亚军高出 10.8 个百分点。AlexNet 是由...
  • 原文:https://www.zhihu.com/question/60759296基于深度卷积神经网络进行人脸识别的原理是什么?这里的人脸识别包括但不限于:人脸检测,人脸对齐,身份验证识别,和表情、年龄识别。 CS小白提问,求轻喷。不求多...
  • CNN卷积神经网络原理

    2017-08-06 19:03:02
    理解CNN卷积神经网络原理   1 前言  2012年我在北京组织过8期machine learning读书会,那时“机器学习”非常火,很多人都对其抱有巨大的热情。当我2013年再次来到北京时,有一个词似乎...
  • 卷积神经网络(一):卷积层和池化层的学习 卷积神经网络(CNN)由输入层、卷积层、激活函数、池化层、全连接层组成,即INPUT-CONV-RELU-POOL-FC (1)卷积层:用它来进行特征提取,如下: 输入图像是32*...
  • 58 网络正则化(network regularization),113 微调神经网络(fine-tuning),132 X 向量范数(vector norm),159 向量运算(vector computation),159 修正线性单元(rectified linear unit),93 学习率(learning ...
  • 由于在深度学习的模型训练中通常仅涉及一阶导数,因此本附录仅讨论一元或多元函数的一阶导数情形。 已知导数定义为: 假设有函数F(x)= f(g(x)),其中f(·)和g(·)为函数,x为常数,使得f(·)在g(x)可...
  • 随机梯度下降 梯度下降法(gradient descent)是最小化损失函数(或目标函数)一种常用的一阶...目前对于深度神经网络的训练,如卷积神经网络、递归神经网络等,均采用批处理的随机梯度下降算法(mini-batch SGD)。
  • 参考文献 [1]Lei Jimmy Ba and Rich Caruana.Do deep nets really need to be deep?In Advances in Neural Information Processing Systems,pages 2654–2662,2014. [2]Herbert Bay,Tinne Tuytelaars,and Luc Van ...
  • 向量、矩阵及其基本运算 深度学习模型特别是卷积神经网络中涉及较多向量和矩阵运算及操作。本附录简要介绍向量和矩阵的基础知识,以及向量、矩阵的基本运算。 A.1向量及其基本运算 A.1.1向量 向量(vector)是指由n...
  • 本章将系统介绍、对比7种当下深度卷积神经网络中常用的激活函数:Sigmoid型函数、tanh(x)型函数、修正线性单元(ReLU)、Leaky ReLU、参数化ReLU、随机化ReLU和指数化线性单元(ELU)。 激活函数模拟了生物神经元...
  • 深度卷积神经网络自2012年一炮走红,到现在俨然已成为人工智能领域一个举足轻重的研究课题,甚至可以说深度学习是诸如计算机视觉、自然语言处理等领域主宰性的研究技术,更是工业界各大公司和创业机构着力发展、力求...
  • 图中阴影标注的模块表示该模块可由算法直接从数据中自学习所得 图2 人工智能、机器学习、表示学习、深度学习和卷积神经网络(CNN)之间的关系 0.3 深度学习的前世今生 虽说阿尔法狗一鸣惊人,但它背后的深度学习这个...
  • https://www.sumaarts.com/share/620.html
  • 卷积神经网络,本质也是一种BP神经网络,但是采用了一些手段和技巧对抗梯度消失,卷积神经网络特别适用用于图像处理。 详细参考下面的文章,已经写的很好。 http://www.cnblogs.com/nsnow/p/4562308.html ...
  • 深度卷积神经网络的发展及其在计算机视觉领域的应用(综述型论文) (简单总结) 作者:张顺,龚怡宏、王进军 摘要:本文主要讲了①卷积神经网络的发展历史,②深度卷积神经的原理,③卷积神经网络的代表性成果...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,360
精华内容 544
关键字:

深度卷积神经网络原理