卷积神经网络与普通的神经网络十分相似:他们都由神经元构成,这些神经元拥有可学习的权重和偏差。每一个神经元接收一些输入,执行点积运算并以非线性可选择地跟随它。整个网络仍然表征一个单个可微分的分数函数:从一端的单个图片像素到另一端的类别分数。他们在最后一个(全连接)层上仍然有一个损失函数(例如SVM或Softmax),并且我们为学习常规神经网络而设计的所有提示和技巧仍然适用。

那么什么改变了? CNN结构明确假设输入是图像,这允许我们将某些属性编码到架构中。这将使得前向函数更加有效地实现,并且大大减少网络中的参数数量。

1 架构简介

回顾:常规神经网络。正如我们前一个章节看到的,神经网络接收一个输入(一个矢量),并通过一系列的隐藏层将它进行转化。每一个隐藏层都由一组神经元构成,其中每一个神经元都与前一个层的神经元完全连接,而层内的神经元则完全独立,不共享任何的连接。最后的全连接层被称为“输出层”,并且在分类设置中它代表了类别分数。

常规神经网络不能很好地缩放到完整的图像。在CIFAR-10中,图片只有32*32*3大小(宽32,高32,3个颜色通道),所以在常规神经网络的第一个隐藏层中,一个全连接的神经元将会拥有32*32*3=3072个权重。这个数目看起来仍然能够管理,但显然这种全连接的结构不能够缩放到更大的图片。例如,一个200*200*3的图片,将会导致神经元拥有200*200*3=120,000个权重。此外,我们将会有许多个这样的神经元,所以参数数量会急剧上升!显然,这种完全的连接是浪费的,并且巨大的参数数量将会立刻导致过度拟合。

神经元的3D量。卷积神经网络利用了输入由图像组成的事实,并且其通过更有效的方式对架构进行了约束。特别地,不同于常规神经网络,CNN的层具有以三维排列的神经元:宽度,高度和深度。(注意,这里的深度指的是激活量的第三维,而不是指完整神经网络的深度,即网络中的层的总数。)例如,CIFAR-10中的输入图像是一个激活的输入量,并且该量尺寸是32*32*3(宽度,高度和深度)。我们马上就会知道,层中的神经元只会被连接到前一个层的一小块区域,而不是以完全连接的方式连接到所有的神经元。此外,对于CIFAR-10最后的输出层尺寸是1*1*10,因为在CNN结构的最后,我们将把整个图像缩减为一个类别分数的单一向量,该向量是沿着深度维度排列的。这里是一个图示:


左图:一个3层的神经网络。右图:一个神经元以三维排列的卷积神经网络(宽度,高度和深度),如其中一个层展示的那样。CNN的每一个层将3D的输入量转化成3D的输出量。在这个例子中,红色的输入层代表了图片,所以它的宽和高将会是图片的尺寸,并且深度将会是3(红色,绿色和蓝色通道)。


CNN是由许多层构成的。每个层都有一个简单的API:它利用一些可能具有参数的可微函数,将3D的输入量转化为3D的输出量。

2 CNN的层

如上所述,简单的CNN是一系列层,并且CNN的每一个层都通过一个可微函数将一个量转化为另一个量。我们用三个主要类型的层去构建CNN结构:卷积层(Convolutional Layer),池化层(Pooling Layer),全连接层(Fully-Connected Layer)。我们将会堆叠这些层去构建一个完整的CNN结构。

示例结构:简介。下面我们将会涉及到更多的细节,但是一个用于CIFAR-10分类的简单CNN将会有这样的结构:INPUT-CONV-RELU-POOL-FC,细节如下:

  • INPUT[32*32*3]将保存图像的原始像素值,在这种情况下是一个宽度32,高度32,以及具有三个颜色通道R,G,B的图像。
  • CONV层将计算连接到输入局部区域中的神经元的输出,每一个都计算它们的权重和它们在输入量中连接到的小区域之间的点积。如果我们决定使用12个滤波器,这可能会产生一个[32*32*12]的量。
  • RELU层将应用一个元素激活函数,例如阈值是零点的max(0,x)。这将不改变量的尺寸[32*32*12]。
  • POOL层将会沿着空间维度(宽度,高度)执行一个向下采样操作,从而产生诸如[16*16*2]的量。
  • FC层将计算类别分数,产生一个[1*1*10]的量,其中10个数字中每个对应一个类别分数,例如CIFAR-10中的10个类别。顾名思义,和普通的神经网络一样,该层的每一个神经元都将连接到前一个量中的所有数字。

用这种方式,CNN就一层一层地将原始的图像,从原始的像素值转化成了类别分数。注意一些层包含参数而另一些不包含。特别的,CONV/FC层所执行的转化,不仅仅是激活的输入量的函数,也是参数的函数(神经元的权重和偏差)。而另一方面,RELU/POOL层会实现一个固定的函数。CONV/FC层中的参数将使用梯度下降进行训练,以使得对于每一个图像,CNN计算的类别分数和它在训练集中的标签保持一致。

总结:

  • CNN结构在最简单的情况下是将图像量转化为输出量(例如,保存类别分数)的图层列表。
  • 有几种不同类型的层(例如,CONV/FC/RELU/POOL是目前最受欢迎的层)
  • 每一层都通过一个可微分的函数,接收一个3D的输入量,并将它转化成一个3D的输出量
  • 有的层具有参数,有的层不具有参数(例如,CONV/FC具有,RELU/POOL不具有)
  • 有的层具有附加的超参数,有的曾不具有(例如,CONV/FC/POOL具有,RELU不具有)

示例CNN结构的激活。最初的量存储了原始的图片像素(最左边)而最后的量存储了类别分数(最右边)。处理路径上每一个激活的量都展示为一列。因为可视化3D的量十分困难,我们列出了每个量的横向切片。最后一层的量保存着每个分类的分数,但是这里我们知可是火了前五名的分数,并把每个的标签标示出来。完整的网页演示。这里展示的结构是一个小型的VCG网络,我们稍后会继续讨论。

转载:https://blog.csdn.net/sinat_28728095/article/details/56284699

    

卷积神经网络 CNN的更多相关文章

  1. 卷积神经网络(CNN)前向传播算法

    在卷积神经网络(CNN)模型结构中,我们对CNN的模型结构做了总结,这里我们就在CNN的模型基础上,看看CNN的前向传播算法是什么样子的.重点会和传统的DNN比较讨论. 1. 回顾CNN的结构 在上一 ...

  2. 卷积神经网络(CNN)反向传播算法

    在卷积神经网络(CNN)前向传播算法中,我们对CNN的前向传播算法做了总结,基于CNN前向传播算法的基础,我们下面就对CNN的反向传播算法做一个总结.在阅读本文前,建议先研究DNN的反向传播算法:深度 ...

  3. 卷积神经网络CNN总结

    从神经网络到卷积神经网络(CNN)我们知道神经网络的结构是这样的: 那卷积神经网络跟它是什么关系呢?其实卷积神经网络依旧是层级网络,只是层的功能和形式做了变化,可以说是传统神经网络的一个改进.比如下图 ...

  4. 【深度学习系列】手写数字识别卷积神经--卷积神经网络CNN原理详解(一)

    上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...

  5. 深度学习之卷积神经网络(CNN)详解与代码实现(二)

    用Tensorflow实现卷积神经网络(CNN) 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10737065. ...

  6. 深度学习之卷积神经网络(CNN)详解与代码实现(一)

    卷积神经网络(CNN)详解与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10430073.html 目 ...

  7. 【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理

    上篇文章我们给出了用paddlepaddle来做手写数字识别的示例,并对网络结构进行到了调整,提高了识别的精度.有的同学表示不是很理解原理,为什么传统的机器学习算法,简单的神经网络(如多层感知机)都可 ...

  8. 卷积神经网络(CNN)学习笔记1:基础入门

    卷积神经网络(CNN)学习笔记1:基础入门 Posted on 2016-03-01   |   In Machine Learning  |   9 Comments  |   14935  Vie ...

  9. 深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 关于卷积神经网络CNN,网络和文献中 ...

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

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

随机推荐

  1. secureCRT保存屏幕输出内容

    1.有时执行一个mysql语句,屏幕打印行过多,需要设置翻动最大行数 打开Options Session Options–>Terminal–>Emulation,在Scrollback输 ...

  2. 静态方法和实例方法(mark)

    借花献佛[转自 ivony's blog] 关于静态方法和实例方法的一些误区. 一.    静态方法常驻内存,实例方法不是,所以静态方法效率高但占内存.     事实上,方法都是一样的,在加载时机和占 ...

  3. python学习------迭代器协议和生成器

    一.递归和迭代 递归:自己调用自己 举例解释:问路   A问B康明网络科技怎么走,B说我不是很清楚,我帮你问问C,C说我也不知道.我问问D,D说 就在兴隆.之后D返回结果给C,C返回结果给B,B返回结 ...

  4. 活代码LINQ——03

    一.主模块代码: 'Fig.4.13:GradeBookTest.vb 'GradeBook constructor used to specify the course name at the 't ...

  5. python基础之作业2----购物车小练习

    product_list = [    ("Iphone",6000),    ("Mac pro",12800),    ("Bike", ...

  6. 搭建SSH框架心得

    <Struts2+Spring4+hibernate3> 工程结构 导入相关jar包:自行网上百度即可,根据环境需要 写dao类 以及实现 package com.icommon.dao; ...

  7. xpath简单实用

    一.xpath 基本语法 /html /html/head/title 绝对路径(一层层的查找) /html//title 相对于当前节点 //title/./../.. . 当前节点 ..父节点 . ...

  8. Git通过密钥对远程仓库上传和更新详细操作

    1,先到ssh中ls查看之前本地生成的公钥和私钥,然后将别人的密钥替换掉自己的密钥,这里我把别人的密钥放在d:/desktop/id_rsa 中,利用cp /D/Desktop/id_rsa  id_ ...

  9. L362 When to Bring up Salary During the Job Interview Process

    Money is an awkward topic of conversation for many professionals—even more so when you’re busy tryin ...

  10. where are you?

    #version_s#1.2#version_e# #update_s#https://files.cnblogs.com/files/dyh221/rank0410.zip#update_e#