精华内容
下载资源
问答
  • 2020-07-05 23:42:04

    以下是本书的目录,文章附赠百度网盘链接啊,找遍了全网,终于买到了一个很不错的资源!!!大家千万不要错过哦~~~~

    卷积神经网络是深度学习重要的模型之一。本书是卷积神经网络领域的入门读物,假定读者不具备任何机器学习知识。书中尽可能少地使用数学知识,从机器学习的概念讲起,以卷积神经网络的最新发展结束。

    本书首先简单介绍了机器学习的基本概念,详细讲解了线性模型、神经网络和卷积神经网络模型,然后介绍了基于梯度下降法的优化方法和梯度反向传播算法,接着介绍了训练网络前的准备工作、神经网络实战、卷积神经网络的应用及其发展。针对每个关键知识点,书中给出了基于NumPy 的代码实现,以及完整的神经网络和卷积神经网络代码实现,方便读者训练网络和查阅代码。

    本书既可以作为卷积神经网络的教材,也可以供对卷积神经网络感兴趣的工程技术人员和科研人员参考


    目录

    第一部分 模型篇

    第 1章 机器学习简介 2

    1.1 引言 2

    1.2 基本术语 3

    1.3 重要概念 5

    1.4 图像分类 12

    1.5 MNIST数据集简介 15

    第 2章 线性分类器 17

    2.1 线性模型 17

    2.1.1 线性分类器 18

    2.1.2 理解线性分类器 19

    2.1.3 代码实现 21

    2.2 softmax损失函数 22

    2.2.1 损失函数的定义 23

    2.2.2 概率解释 24

    2.2.3 代码实现 25

    2.3 优化 26

    2.4 梯度下降法 26

    2.4.1 梯度的解析意义 27

    2.4.2 梯度的几何意义 29

    2.4.3 梯度的物理意义 29

    2.4.4 梯度下降法代码实现 29

    2.5 牛顿法 30

    2.6 机器学习模型统一结构 31

    2.7 正则化 33

    2.7.1 范数正则化 34

    2.7.2 提前终止训练 37

    2.7.3 概率的进一步解释 38

    第3章 神经网络 39

    3.1 数学模型 39

    3.2 激活函数 41

    3.3 代码实现 44

    3.4 学习容量和正则化 45

    3.5 生物神经科学基础 48

    第4章 卷积神经网络的结构 50

    4.1 概述 50

    4.1.1 局部连接 51

    4.1.2 参数共享 52

    4.1.3 3D特征图 52

    4.2 卷积层 53

    4.2.1 卷积运算及代码实现 54

    4.2.2 卷积层及代码初级实现 57

    4.2.3 卷积层参数总结 63

    4.2.4 用连接的观点看卷积层 64

    4.2.5 使用矩阵乘法实现卷积层运算 67

    4.2.6 批量数据的卷积层矩阵乘法的代码实现 69

    4.3 池化层 74

    4.3.1 概述 74

    4.3.2 池化层代码实现 76

    4.4 全连接层 79

    4.4.1 全连接层转化成卷积层 80

    4.4.2 全连接层代码实现 82

    4.5 卷积网络的结构 83

    4.5.1 层的组合模式 83

    4.5.2 表示学习 86

    4.6 卷积网络的神经科学基础 87

    第二部分 优化篇

    第5章 基于梯度下降法的最优化方法 90

    5.1 随机梯度下降法SGD 91

    5.2 基本动量法 93

    5.3 Nesterov动量法 95

    5.4 AdaGrad 95

    5.5 RMSProp 97

    5.6 Adam 98

    5.7 AmsGrad 99

    5.8 学习率退火 99

    5.9 参数初始化 100

    5.10 超参数调优 101

    第6章 梯度反向传播算法 104

    6.1 基本函数的梯度 104

    6.2 链式法则 105

    6.3 深度网络的误差反向传播算法 107

    6.4 矩阵化 109

    6.5 softmax损失函数梯度计算 111

    6.6 全连接层梯度反向传播 112

    6.7 激活层梯度反向传播 113

    6.8 卷积层梯度反向传播 115

    6.9 最大值池化层梯度反向传播 118

    第三部分 实战篇

    第7章 训练前的准备 124

    7.1 中心化和规范化 124

    7.1.1 利用线性模型推导中心化 125

    7.1.2 利用属性同等重要性推导规范化 126

    7.1.3 中心化和规范化的几何意义 128

    7.2 PCA和白化 128

    7.2.1 从去除线性相关性推导PCA 129

    7.2.2 PCA代码 130

    7.2.3 PCA降维 131

    7.2.4 PCA的几何意义 133

    7.2.5 白化 134

    7.3 卷积网络在进行图像分类时如何预处理 135

    7.4 BN 136

    7.4.1 BN前向计算 136

    7.4.2 BN层的位置 137

    7.4.3 BN层的理论解释 138

    7.4.4 BN层在实践中的注意事项 139

    7.4.5 BN层的梯度反向传播 140

    7.4.6 BN层的地位探讨 141

    7.4.7 将BN层应用于卷积网络 141

    7.5 数据扩增 142

    7.6 梯度检查 144

    7.7 初始损失值检查 146

    7.8 过拟合微小数据子集 146

    7.9 监测学习过程 147

    7.9.1 损失值 147

    7.9.2 训练集和验证集的准确率 148

    7.9.3 参数更新比例 149

    第8章 神经网络实例 150

    8.1 生成数据 150

    8.2 数据预处理 152

    8.3 网络模型 153

    8.4 梯度检查 156

    8.5 参数优化 158

    8.6 训练网络 159

    8.7 过拟合小数据集 162

    8.8 超参数随机搜索 162

    8.9 评估模型 165

    8.10 程序组织结构 165

    8.11 增加BN层 167

    8.12 程序使用建议 171

    第9章 卷积神经网络实例 172

    9.1 程序结构设计 173

    9.2 激活函数 173

    9.3 正则化 174

    9.4 优化方法 175

    9.5 卷积网络的基本模块 176

    9.6 训练方法 181

    9.7 VGG网络结构 186

    9.8 MNIST数据集 197

    9.9 梯度检测 199

    9.10 MNIST数据集的训练结果 202

    9.11 程序使用建议 205

    第 10章 卷积网络结构的发展 206

    10.1 全局平均池化层 206

    10.2 去掉池化层 208

    10.3 网络向更深更宽发展面临的困难 209

    10.4 ResNet向更深发展的代表网络 210

    10.5 GoogLeNet向更宽发展的代表网络 213

    10.6 轻量网络 215

    10.6.1 1×1深度维度卷积代码实现 217

    10.6.2 3×3逐特征图的卷积代码实现 219

    10.6.3 逆残差模块的代码实现 222

    10.7 注意机制网络SENet 223


    书籍源码下载链接
    链接:https://pan.baidu.com/s/1O3qXLEbp2D1YT41YL51HwQ
    提取码:oixo

    更多相关内容
  • CNN卷积神经网络

    2018-12-05 14:58:47
    机器学习实战内容对应的cnn代码,通过代码实现理解深度学习的原理。
  • 造就机器能够获得在这些视觉方面取得优异性能可能是源于一种特定类型的神经网络——卷积神经网络(CNN)。如果你是一个深度学习爱好者,你可能早已听说过这种神经网络,并且可能已经使用一些深度学习框架比如caffe、...
  • CNN-卷积神经网络在FPGA上的实现(一) fpga开发.pdf
  • 解析卷积神经网络

    2018-08-16 22:22:44
    络,向读者剖析了卷积神经网络的基本部件与工作机理,更重要的是系统性的 介绍了深度卷积神经网络在实践应用方面的细节配置与工程经验。笔者希望本 书“小而精”,避免像某些国外相关书籍一样浅尝辄止的“大而空”。
  • 卷积神经网络 简介 CNN就是著名的卷积神经网络,是一种前馈神经网络。 CNN不同于传统的神经网络只有线性连接,CNN包括卷积(convolution)操作、汇合(pooling)操作和非线性激活函数映射(即线性连接)。 经典的CNN...

    卷积神经网络

    简介

    卷积网络(convolutional network)(LeCun, 1989),也叫做 卷积神经网络(convolutional neural network, CNN),是一种专门用来处理具有类似网格结构的数据的神经网络。例如时间序列数据(可以认为是在时间轴上有规律地采样形成的一维网格)和图像数据(可以看作是二维的像素网格)。卷积网络在诸多应用领域都表现优异。“卷积神经网络’’ 一词表明该网络使用了 卷积(convolution)这种数学运算。卷积是一种特殊的线性运算。卷积网络是指那些至少在网络的一层中使用卷积运算来替代一般的矩阵乘法运算的神经网络

    CNN就是著名的卷积神经网络,是一种前馈神经网络。

    CNN不同于传统的神经网络只有线性连接,CNN包括卷积(convolution)操作、汇合(pooling)操作和非线性激活函数映射(即线性连接)。
    经典的CNN网络有Alex-Net、VGG-Nets、Resnet等。
    深度学习在计算机图像识别上的应用非常成功。利用深度学习,我们能够对图片进行高精度识别,实现这一功能的,主要依靠神经网络中的一种分支,名为卷积网络。卷积网络与我们前面实现的网络不同之处在于,它可以直接接受多维向量,而我们以前实现的网络只能接收一维向量。
    来自八斗人工智能课程
    卷积操作,其实是把一张大图片分解成好多个小部分,然后依次对这些小部分进行识别。

    通常我们会把一张图片分解成多个33或55的”小片“,然后分别识别这些小片段,最后把识别的结果集合在一起输出给下一层网络。

    这种做法在图象识别中很有效。因为它能对不同区域进行识别,假设识别的图片是猫脸,那么我们就可以把猫脸分解成耳朵,嘴巴,眼睛,胡子等多个部位去各自识别,然后再把各个部分的识别结果综合起来作为对猫脸的识别。
    在这里插入图片描述
    当我们的图片(黑白图片厚度为1 ,彩色图片厚度为3)输入到神经网络后,我们会通过卷积神经网络将图片的长和宽进行压缩,然后把厚度增加。最后就变成了一个长宽很小,厚度很高的像素块。然后结果放入普通的神经网络中处理,最后链接一个分类器,从而分辨出图片是什么。

    重要思想

    卷积运算通过三个重要的思想来帮助改进机器学习系统: 稀疏交互(sparse
    interactions)、 参数共享(parameter sharing)、 等变表示(equivariant representations)。

    传统的神经网络使用矩阵乘法来建立输入与输出的连接关系。其中,参数矩阵中每一个单独的参数都描述了一个输入单元与一个输出单元间的交互。这意味着每一个输出单元与每一个输入单元都产生交互。然而,卷积网络具有 稀疏交互(sparse interactions)(也叫做 稀疏连接(sparse connectivity)或者 稀疏权重(sparse weights))的特征。这是使核的大小远小于输入的大小来达到的。举个例子,当处理一张图像时,输入的图像可能包含成千上万个像素点,但是我们可以通过只占用几十到上百个像素点的核来检测一些小的有意义的特征,例如图像的边缘。这意味着我们需要存储的参数更少,不仅减少了模型的存储需求,而且提高了它的统计效率。这也意味着为了得到输出我们只需要更少的计算量。

    参数共享(parameter sharing)是指在一个模型的多个函数中使用相同的参数。在传统的神经网络中,当计算一层的输出时,权重矩阵的每一个元素只使用一次,当它乘以输入的一个元素后就再也不会用到了。作为参数共享的同义词,我们可以说一个网络含有 绑定的权重(tied weights),因为用于一个输入的权重也会被绑定在其他的权重上。在卷积神经网络中,核的每一个元素都作用在输入的每一位置上(是否考虑边界像素取决于对边界决策的设计)。卷积运算中的参数共享保证了我们只需要学习一个参数集合,而不是对于每一位置都需要学习一个单独的参数集合。这虽然没有改变前向传播的运行时间(仍然是 O(k × n)),但它显著地把模型的存储需求降低至 k 个参数,并且 k 通常要比 m 小很多个数量级。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    池化

    卷积网络中一个典型层包含三级(如图9.7 所示)。在第一级中,这一层并行地计算多个卷积产生一组线性激活响应。在第二级中,每一个线性激活响应将会通过一个非线性的激活函数,例如整流线性激活函数。这一级有时也被称为 探测级(detectorstage)。在第三级中,我们使用 池化函数(pooling function)来进一步调整这一层的输出。
    池化函数使用某一位置的相邻输出的总体统计特征来代替网络在该位置的输出。例如, 最大池化(max pooling)函数 (Zhou and Chellappa, 1988) 给出相邻矩形区域内的最大值。其他常用的池化函数包括相邻矩形区域内的平均值、L2 范数以及基于据中心像素距离的加权平均函数。
    不管采用什么样的池化函数,当输入作出少量平移时,池化能够帮助输入的表示近似 不变(invariant)。对于平移的不变性是指当我们对输入进行少量平移时,经过池化函数后的大多数输出并不会发生改变。图 9.8 用了一个例子来说明这是如何实现的。局部平移不变性是一个很有用的性质,尤其是当我们关心某个特征是否出现而不关心它出现的具体位置时。例如,当判定一张图像中是否包含人脸时,我们并不需要知道眼睛的精确像素位置,我们只需要知道有一只眼睛在脸的左边,有只在右边就行了。

    卷积操作产生了太多的数据,如果没有max pooling对这些数据进行压缩,那么网络的运算量将会非常巨大,而且数据参数过于冗余就非常容易导致过度拟合。

    卷积核

    图片的采样器也可以叫做共享权值,用来在图片上采集信息。卷积核有自己的长宽,也可以定义自己的步长stride ,每跨多少步进行一次抽离信息,跨的步长越多就越容易丢失图片信息。然后对抽取的信息进行像素的加权求和得到Feature Map 增加了采集结果的厚度。

    总而言之 卷积是用来不断的提取特征,每提取一个特征就会增加一个feature map,所以采集后的图片厚度不断变厚

    高斯滤波、sobel滤波等等是设定好卷积核的滤波方法。如果不是由人来设计一个滤波器,而是从一个随机滤波器开始,根据某种目标、用某种方法去逐渐调整它,直到它接近我们想要的样子呢?
    这就是卷积神经网络的思想了。

    可调整的滤波器是CNN的“卷积”那部分;如何调整滤波器则是CNN的“神经网络”那部分。

    卷积神经网络VS全连接神经网络

    1. 它不是全连接的:右层的神经元并非连接上全部输入,而是只连接了一部分。这里的一部分就是输入图像的一个局部区域。我们常听说 CNN 能够把握图像局部特征、alphaGO 从棋局局部状态提取信息等等,就是这个意思。这样一来权值少了很多,因为连接少了。
    2. 权值其实还更少,因为每一个神经元的9个权值都是和其他神经元共享的。全部n*n个神经元都用这共同的一组9个权值。那么这个神经网络其实一共只有9个参数需要调整

    数据预处理–图像增强

    图像增强表示的是,在原始图像的基础上,对数据进行一定的改变,增加了数据样本的数量,但是数据的标签值并不发生改变。

    图像增强分为两种:

    • 增强“自我”:通过一定手段将感兴趣区域增强,直至从图像中脱颖而出的那种,也是正常思维下常用的方法。
    • 削弱“别人”:是增强“自我”的反方法,指的是通过一定手段将不感兴趣区域削弱,直至感兴趣区域脱颖而出。

    图像增强常用方法:
    在这里插入图片描述

    展开全文
  • CNN卷积神经网络详解

    2018-08-05 15:59:02
    CNN神经网络入门书籍,想要入门神经网络,学习基础知识的不可错误
  • 这两天突然发现,不管是书籍还是竞赛里的卷积神经网络模型都没有讲解说为什么这样设置层数?比如先有两个卷积层,再有一个池化层,最后有一个全连接层,选择这些层的层数是根据什么原理的呢?这件事引起了我的好奇。...

    这两天突然发现,不管是书籍还是竞赛里的卷积神经网络模型都没有讲解说为什么这样设置层数?比如先有两个卷积层,再有一个池化层,最后有一个全连接层,选择这些层的层数是根据什么原理的呢?这件事引起了我的好奇。于是我就展开了调研,发现这个问题目前在深度学习领域没有具体的解决方法,大多是凭经验来设计神经网络模型。
    在寻找答案的过程中发现一篇文献提出了两个对于深度卷积神经网络设计的约束条件,在满足这两个约束条件下,使层数最大化,就可以得到性能最好的模型。文献笔记如下:
    本文将设计深层卷积神经网络的架构问题转化为对两个约束条件的优化问题:
    第一个约束条件是c-value不能太小,c-value是一个度量标准,它可以度量模型学习更多复杂特征的能力。(c-value的定义后文会提到)
    第二个约束条件是特征层中顶层的卷积层其接受域尺寸不能大于图像的尺寸(卷积神经网络可以分成分类层和特征层,本文主要讲解特征层的设计,因为分类层结构较为简单)
    在这里插入图片描述
    这篇文章中设计网络模型的原理适用于任何任务,当然如果结合具体的任务会设计的更好。
    分类层的设计
    分类层通常由两个全连接层组成,每一个连接层都有一个Dropout,但是这种设计可能会出现过拟合的情况如果训练集不够大。
    在本文中,我们为了降低过拟合的风险,设计一个新的分类层,将特征图降采样至6×6,7×7或者8×8的小尺寸,然后应用5×5的卷积层,之后使用一个最大池化层,最后加上Dropout。
    这个分类层中,卷积核的尺寸相对于特征图来说是很大的,此时的卷积层与全连接层非常类似。选择卷积核的尺寸时要注意选择相对于特征图来说偏大的尺寸,并且池化层要使用最大池化函数而不是平均池化函数。

    1.第一个约束条件-学习能力

    卷积层的作用是从将输入的特征组合成更复杂的特征,这是由于卷积层可以学习到特征的空间层次结构。下图是图像的空间层次结构。
    在这里插入图片描述

    在这里插入图片描述
    由Figure2(b)可以看出当卷积核的尺寸小于A特征与B特征响应的距离,卷积层就不能学习到较为复杂的特征,因为在这个时候,卷积层就不能同时检测到A和B,并且也检测不到它们之间的空间关系(spatial relationships)。如果想要重新获得卷积层的学习能力,有两个方法,要么增大卷积核的尺寸,要么通过降采样缩短A与B之间响应的距离。在本文的工作中,采用的是通过降采样来缩短A与B之间响应的距离的方法来重获卷积层的学习能力。
    随着卷积神经网络的层数越来越多,深度越来越深,如果没有进行降采样的话,学习能力丧失的几率会越来越大,因为随着层数的增多,特征的尺寸和它们之间的空间关系会增长。一旦大多数输入特征的空间关系超过了卷积核的尺寸大小,这个卷积层就会丧失掉学习更复杂特征的能力。
    为了定量测量卷积层学习能力的大小,我们定义了c-value:
    在这里插入图片描述
    对于一个 k × k k×k k×k的卷积层来说,其Real Filter Size是 k k k(在没有降采样的情况下),在每次降采样之后, k k k值会加倍,例如,一次降采样之后,Real Filter Size 变为 2 k 2k 2k,两次降采样之后Real Filter Size 变为 4 k 4k 4k
    Receptive Field Size是神经元在原始图像中能看到的最大尺寸,它与卷积神经网络的深度成正比。
    Figure3显示了在一个典型的卷积神经网络中,Receptive Field Size是如何增长的(这里我没看太懂)
    在这里插入图片描述
    我们使用Receptive Field Size来代替spatial relationships,虽然spatial relationships更精确,但是它无法测量
    其实Receptive Field Size是与spatial relationships成比例的。
    通过以上讨论,我们提出深层卷积神经网络设计的第一个约束条件:
    每个卷积层的c-value都应该大于最小值t,根据经验发现,t=1/6对于不同任务的所有卷积层是一个很好的c-value下界。

    2.学习的必要性-第二个约束条件

    随着Receptive Field 的增大,越来越多复杂的新特征开始出现,在这个过程中我们需要添加额外的层来学习新出现的特征。
    当Receptive Field达到整个图像大小时即神经元已经看到了整个图像区域,就会停止出现更新更复杂的特征,添加新的神经网络层的驱动力就会消失。
    通过经验可以知道,当Receptive Field达到饱和时如果再加入新的层,这样做对于模型的性能没有任何帮助,相反会使得模型的性能下降并且增加过拟合的风险。
    基于以上的分析和我们以往的学习,我们对于深度卷积神经网络提出第二个约束:
    顶层的Receptive Field尺寸大小不能大于图像的尺寸。(顶层是先进入模型的层,底层是后进入的层)
    这个约束条件暗示最顶层卷积层Receptive Field大小必须接近图像区域大小(但是不能超过图像区域大小),如果顶层的Receptive Field的大小远远小于图像大小,我们可以多增加一层来达到我们的目标(即增加深度),这样做没有违背约束条件。
    从另一个角度来说,如果Receptive Field的尺寸比图像区域尺寸小的多,那么网络将会失去看到和学习更高级的特性的机会,这对网络性能来说是不够好的。

    3.数学公式

    在这部分,我们将深层架构的设计转换为约束优化问题,然后给出并证明了在一定条件下的最优解。如前所述,我们假设每一层的卷积核大小都是相同的,我们不考虑卷积核数量,因为卷积核数量依赖于具体的任务和数据集

    3.1 公式

    首先我们先定义一些输入参数。图像尺寸: z z z 卷积核尺寸: k k k 最小 c − v a l u e c-value cvalue t t t
    深层模型的架构由stage n n n的总数和一系列stage a i {a_{i}} ai中的层数确定(stage可以理解成块,比如卷积块)。一系列的stage被降采样所分割(步幅为2)。例如,n=3,a1,a2,a3=4,3,2表示模型有三个stage,第一个stage的层数是4,第二个stage的层数是3,第三个stage的层数是2,每个stage之间有步幅为2的降采样层,
    深度学习的目标本质上是最大化层数(在满足本文给出的两个约束条件下)

    第一个约束条件
    所有层的 c − v a l u e c-value cvalue值不能小于最小的 c − v a l u e c-value cvalue t t t
    随着Receptive Field的增加(卷积核的尺寸在同一个stage中保持不变),在同一个stage中最后一层的 c − v a l u e c-value cvalue值是最小的,因此,第一个约束条件相当于是每一个stage中的最后一层的c-value不能小于t,转化为一系列不等式如下:
    第一个约束条件
    所有层的c-value值不能小于最小的c-value:t
    随着Receptive Field的增加,并且卷积核的尺寸在同一个stage中保持不变,在同一个stage中最后一层的c-value值是最小的,因此,第一个约束条件相当于是每一个stage中的最后一层的c-value不能小于t,转化为一系列不等式如下:
    在这里插入图片描述
    2 l k 2^{l}k 2lk是第 l l l个stage的real filter size, ∑ i = 1 l 2 i − 1 ( k − 1 ) a i \sum_{i=1}^{l}2^{i-1}(k-1)a_{i} i=1l2i1(k1)ai是第 l l l个stage的最后一层的Receptive Field Size, t t t c − v a l u e c-value cvalue的最小值,我们在所有任务中将其设置为1/6
    第二个约束条件
    最顶层的receptive field的尺寸不能大于整个图像区域.
    不等式表示如下:
    在这里插入图片描述
    左边的式子是最顶层卷积层的receptive field, 2 i − 1 ( k − 1 ) 2^{i-1}(k-1) 2i1(k1)是第 i i i个stage每一层的receptive field的增量, 2 i − 1 ( k − 1 ) a i 2^{i-1}(k-1)a_{i} 2i1(k1)ai是第 i i i个stage的receptive field 的总增量
    我们的目标就是在满足约束即公式(2)和(3)的前提下,最大化总层数。稍微转变一下约束条件公式,我们得到如下公式:
    在这里插入图片描述
    n n n a i {a_{i}} ai都是整数,我们用等价变换简化了第一约束和第二约束以方便后面的讨论。

    3.2 在一定条件下的最优解

    假设图像尺寸是 z = 2 m − 1 k / t z=2^{m-1}k/t z=2m1k/t,层数 a i a_{i} ai从整数放宽到正实数,我们可以证明目标函数的最优解是:
    在这里插入图片描述
    讨论最优解
    虽然这一最优解是在特定条件下获得的,但是对于怎样在一般条件下设计深层架构提供了很棒的思路。首先,它指导我们在输入参数给定的条件下怎么选择降采样次数,第二,除了第一个stage外,其他stage的层数要尽可能的均匀分布,第三,它给出了一系列不同尺寸卷积核能达到的最大深度,基于此我们可以更好的权衡卷积核的尺寸。

    4.一些网络的示例

    在这里,我们展示了一些根据我们的理论设计的网络。

    4.1 Networks for cifar10/cifar100

    cifar10和cifar100是由Hinton的学生Alex整理出来的两个数据集,容纳了6000张微小的彩色图片,尺寸是32×32。在不增强数据的情况下,输入卷积神经网络的图像尺寸大小是32×32,在增强数据的情况下,输入卷积神经网络的图像尺寸大小是24×24,由于我们的设计依赖于输入图像尺寸和卷积核的尺寸,我们在Table(1)和Table(2)中呈现四个网络
    在这里插入图片描述
    在这里插入图片描述
    我们使用所设计的网络在cifar10和cifar100上实现了最好的性能。
    值得注意的是Dr.Ben提出的分数最大池化通过用更复杂的数据增强获得了比我们更好的结果。由于不同的数据增强方法和不同的测试集,因此我们不和他的工作比较。

    4.2. Networks for national data science bowl

    National data science bowl 是kaggle 竞赛。任务是将浮游生物分类至121个预先定义好的类别中。这两个数据集中有30000个训练数据和130000个测试数据。
    为了使设计的网络能相互补充,我们用一系列的输入图像尺寸和卷积核尺寸来设计网络。在Table(3)中,我们展示了四个有代表性并且是根据我们的理论来设计的网络。在这四个网络中,第三个和第四个网络在公共排行榜上获得了0.606和0.609的损失分数。我们的最终的整体由四个模型组成,Table(3)。一个类似于VGG的模型和我们设计的两个变种。7模型集成达到了0.582的分数。结合Bings分数,我们最终达到了0.574的分数。
    在这里插入图片描述
    参考文献:A practical theory for designing very deep convolutional neural networks(来源于kaggle)

    展开全文
  • 大嘴巴漫谈数据挖掘和解析卷积神经网络书籍,用来收藏。
  • 什么是卷积神经网络

    千次阅读 2020-11-04 21:54:26
    笔者自2020.10.13学习卷积神经网络相关知识,于此仅做笔记记载。 声明: 1.本文为个人学习总结,部分内容(包括数学公式)是来自书籍及网上的资料。具体引用的资料请看参考文献。具体的版本声明也参考原文献。 2....

    写在前面

    笔者自2020.10.13学习卷积神经网络相关知识,于此仅做笔记记载。
    声明:
    1.本文为个人学习总结,部分内容(包括数学公式)是来自书籍及网上的资料。具体引用的资料请看参考文献。具体的版本声明也参考原文献。
    2.本文仅供学术交流,非商用。所以每一部分具体的参考资料并没有详细对应,更有些部分本来就是直接从其他博客复制过来的。如果某部分不小心侵犯了大家的版权,还望海涵,并联系本人删除或修改。

    一、综述

    卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一,常见地包含有输入层(input layer)、卷积层(convolutional layer)、激活函数(activation function )、池化层(pooling layer)、全连接层(fully connected layer)。在这里插入图片描述
    上图为卷积神经网络识别汽车的结构展示。

    二、各层介绍

    2.1 输入层(Input Layer)

    参考文章
    输入数据需要进行预处理操作,原因如下:
    (1).防止输入数据单位不一样,导致神经网络收敛速度慢、训练时间长;
    (2).数据范围大的输入在模式分类中作用偏大,反之偏小;
    (3).神经网络中存在的激活函数有值域限制,必须将网络训练的目标数据映射到激活函数值域;
    (4).S形激活函数在(-4,4)区间外很平缓,区分度太低。

    常见三种图像数据预处理方式

    去均值:把输入数据各个维度都中心化到0,所有样本求和求平均,然后用所有的样本减去这个均值样本就是去均值。
    归一化:数据幅度归一化到同样的范围,对于每个特征而言,范围最好是[-1,1]
    PCA/白化:用PCA降维,让每个维度的相关度取消,特征和特征之间是相互独立的。白化是对数据每个特征轴上的幅度归一化。
    在这里插入图片描述

    在这里插入图片描述

    2.2 卷积层

    参考文章1
    参考文章2

    什么是卷积层?

    卷积层的功能是对输入的Image数据进行特征提取。卷积层内部包含n个卷积核(尺寸必须相同),对应输出n个通道,即depth=n。增加一个卷积核,就会产生一个特征图。
    在这里插入图片描述如上图所示,卷积层包含6个卷积核分别卷积进行特征提取,最终得到6个特征图。将这6层叠在一起就得到了卷积层输出的结果,此时depth=6。

    卷积层的一些参数

    卷积核大小(kernel/filter size):卷积核大小可以设为小于输入图像尺寸的任意值,卷积核越大,提取的特征越复杂;
    步长(stride):卷积步长定义了卷积核相邻两次扫过特征图时位置的距离,卷积步长为1时,卷积核会逐个扫过特征图的元素,步长为n时会在下一次扫描跳过n-1个像素。步长越小,提取的特征越多,但是步长一般不取1,因为考虑时间效率的问题,步长也不能太大,否则会漏掉图像上的信息。
    填充:由于卷积的边长大于S,会造成每次移动滑窗后有交集部分,交集部分意味着多次提取特征,尤其表现在图像的中间区域提取次数较多,边缘部分提取次数较少,故采用填充的方式解决。常用的犯法为零填充法。
    在这里插入图片描述
    如上图所示,输入图像为773的矩阵,+pad1意为填充了一圈0, +pad n表示加n圈0。
    深度(depth):通道数,一般初始图像为单通道或三通道(RGB),depth = 1或3,通过卷积层处理后,depth取决于该层卷积核的个数。

    如何进行卷积?

    单通道的图片的卷积处理

    如上所述的卷积核,其是由权重系数构成的矩阵,在进行卷积计算时,卷积核会有规律地扫过输入特征,在感受野(reception filed)内对输入特征做矩阵元素乘法求和并叠加偏差量(bias vector),得到一个新的特征图(feature map)。
    在这里插入图片描述
    如上图所示,左边是image矩阵,使用33的卷积核,第一次滑动的时候,卷积核和图片矩阵作用11+10+11+00+11+10+01+00+11+0=4,会产生一个值,这个值就是右边矩阵的第一个值,filter滑动9次之后,会产生9个值,也就是说下一层有9个神经元,这9个神经元产生的值就构成了一个矩阵,该矩阵叫做特征图(feature map),其表示image的某一维度的特征。

    图片是一个矩阵,我们用指定大小的卷积核从左上角到右下角来滑动,每次滑动所圈起来的结点会和下一层的一个结点相连,连接之后就会形成局部连接,每一条连接都会有一个权重系数构成的矩阵,这个矩阵就是卷积核,所以每次滑动都会产生一个卷积核,而因为权值共享,所以这些卷积核都是一样的。卷积核会不断和当时卷积核所圈起来的局部矩阵作用,每次产生的值就是下一层结点的值了,这样多次产生的值组合起来就是一个特征图,表示某一维度的特征。也就是从左上滑动到右下这一过程中会形成一个特征图矩阵(共享一个卷积核),再从左上滑动到右下又会形成另一个特征图矩阵(共享另一个卷积核),这些特征图都是表示特征的某一维度。

    多通道的图片的卷积处理

    在这里插入图片描述左区域的三个大矩阵是原图像的输入,RGB三个通道用三个矩阵表示,大小为773。Filter W0表示1个filter,尺寸为3X3,深度为3(三个矩阵);Filter W1也表示1个filter。因为卷积中我们用了2个filter,因此该卷积层结果的输出深度为2(绿色矩阵有2个)。Bias b0是Filter W0的偏置项,Bias b1是Filter W1的偏置项。OutPut是卷积后的输出,尺寸为3X3,深度为2。
    计算过程:
    输入是固定的,filter是指定的,因此计算就是如何得到绿色矩阵。
    第一步,在输入矩阵上有一个和filter相同尺寸的滑窗,然后输入矩阵的在滑窗里的部分与filter矩阵对应位置相乘:
    第二步,将3个矩阵产生的结果求和,并加上偏置项,即0+0+0+1=1,因此就得到了输出矩阵的左上角的1:
    第三步,滑动窗口2个步长,重复之前步骤进行计算;
    第四步,最终可以得到,在2个filter下,卷积后生成的深度为2的输出结果。

    如何计算一次卷积后的输出特征图的尺寸?

    在这里插入图片描述

    如图所示:
    在这里插入图片描述
    在这里插入图片描述
    输出尺寸计算:
    在这里插入图片描述
    权重共享,参数计算:
    在这里插入图片描述

    多个卷积层处理:

    在卷积神经网络中,卷积不仅限于对原始输入的卷积,还可以对上一个卷积层的输出进行进一步的卷积处理。特征是不断进行提取和压缩的,最终能得到比较高层次特征,即对原特征一步又一步的浓缩。随着卷积神经网络层数的增加,特征提取的越来越具体化,最后利用最后一层特征可以做各种任务:比如分类、回归等。
    在这里插入图片描述
    如上图所示:第一次卷积可以提取出低层次(low level)的特征;第二次卷积可以提取出中层次(middle level)的特征;第三次卷积可以提取出高层次(high level)的特征。

    2.3 激活函数

    参考文章

    什么是激活函数?

    神经网络中的每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传递给下一层,输入层神经元节点会将输入属性值直接传递给下一层(隐层或输出层)。在多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,这个函数称为激活函数(又称激励函数)。
    在这里插入图片描述

    激活函数的作用

    在神经网络中,激活函数的作用是能够给神经网络加入一些非线性因素,使得神经网络可以更好地解决较为复杂的问题。
    在这里插入图片描述
    如上图,在最简单的情况下,数据是线性可分的,只需要一条直线就已经能够对样本进行很好地分类。
    在这里插入图片描述
    但如果情况变得复杂,数据就变成了线性不可分的情况。在这种情况下,简单的一条直线就已经不能够对样本进行很好地分类了。因此,我们引入非线性的因素,对样本进行分类。
    在这里插入图片描述
    在神经网络中也类似,如果没有激活函数,每一层节点的输入都是上层输出的线性函数,输出都是输入的线性组合,与没有隐藏层效果相当,那么网络的逼近能力就相当有限。引入非线性函数作为激励函数,这样输出就不再是输入的线性组合,而是几乎可以逼近任意函数,深层神经网络表达能力就更加强大。

    常见的激活函数

    参考文章1
    参考文章2
    在实际应用中,我们还会涉及到以下的一些概念:
    饱和:当一个激活函数h(x)满足limn→+∞h′(x)=0 时我们称之为右饱和。当一个激活函数h(x)满足limn→−∞h′(x)=0时我们称之为左饱和。当一个激活函数,既满足左饱和又满足又饱和时,我们称之为饱和。
    硬饱和与软饱和:对任意的x,如果存在常数c,当x>cx>c时恒有 h′(x)=0h′(x)=0则称其为右硬饱和,当x<cx<c时恒 有h′(x)=0h′(x)=0则称其为左硬饱和。若既满足左硬饱和,又满足右硬饱和,则称这种激活函数为硬饱和。但如果只有在极限状态下偏导数等于0的函数,称之为软饱和。

    sigmoid函数:

    在这里插入图片描述优点:
    1.Sigmoid函数的输出映射在(0,1)(0,1)之间,单调连续,输出范围有限,优化稳定,可以用作输出层。
    2.求导容易。
    缺点:
    1.由于其软饱和性,容易产生梯度消失,导致训练出现问题。
    2.其输出并不是以0为中心的。

    tanh函数:

    在这里插入图片描述
    优点:
    1.比Sigmoid函数收敛速度更快。
    2.相比Sigmoid函数,其输出以0为中心。
    缺点:
    还是没有改变Sigmoid函数的最大问题——由于饱和性产生的梯度消失。

    ReLU函数:

    ReLU函数虽然不是Alex首次提出来的,但是当AlexNet在2012届图像识别大赛取得冠军才使其被大众所熟知。softplus可以看作是 ReLU的平滑版本。 relu定义为 f(x)=max(x,0)。softplus 定义为 f(x)=log(1+exp(x))。
    在这里插入图片描述
    由上图可见, relu 在 x<0 时硬饱和。由于 x>0 时导数为 1,所以, relu 能够在 x>0 时保持梯度不衰减,从而缓解梯度消失问题,还能够更很地收敛,并提供了神经网络的稀疏表达能力。但是,随着训练的进行,部分输入会落到硬饱和区,导致对应的权重无法更新,称为“神经元死亡”。

    Leaky ReLU函数(PReLU)

    2.4 池化层(pooling layer)

    在这里插入图片描述
    池化就是对特征图进行特征压缩,池化也叫做下采样,通过选择原来某个区域的max或mean代替那个区域。另外,池化是在不同的depth上是分开执行的,也就是depth=5的话,pooling进行5次,产生5个池化后的矩阵,池化不需要参数控制。池化操作是分开应用到各个特征图的,我们可以从五个输入图中得到五个输出图。
    池化的主要作用如下:
    1.保留主要的特征,同时减少下一层的参数和计算量,防止过拟合;
    2. 保持某种不变性,包括translation(平移),rotation(旋转),scale(尺度);
    常用的池化方法有mean-pooling和max-pooling两种。
    在这里插入图片描述

    2.5 全连接层

    参考文章1
    所谓全连接层是指该层的每一个元素都与上一层所有的元素相连。通常,全连接层在卷积神经网络尾部,当前面卷积层抓取到足以用来识别图片的特征后,接下来的就是如何进行分类。一般来说,卷积层的最后会将末端得到的长方体通过卷积平摊成一个长长的向量,并送入全连接层配合输出层进行分类。在这里插入图片描述
    从上图我们可以看出,我们用一个 3×3×5 的 filter 去卷积上一层的输出,得到的结果就是一个 fully-connected layer 的一个神经元的输出,这个输出就是一个值。
    在这里插入图片描述
    上图所示为一个四分类问题。

    综上,我们可以认为全连接层之间的在做特征提取,而全连接层在做分类,分类结果在输出层输出,这就是卷积神经网络的核心。

    三、常见的卷积神经网络模型

    3.1 AlexNet

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    3.2 GoogleNet

    3.3 VGGNet

    3.4 ResNet

    展开全文
  • 一、什么是卷积神经网络 卷积神经网络(Convolutional Neural Network,CNN)又叫卷积网络(Convolutional Network),是一种专门用来处理具有类似网格结构的数据的神经网络。卷积神经网络一词中的卷积是一种特殊的...
  • 卷积神经网络CNN底层原理探究前言CNN底层原理的浅显理解基本概念相关运算pooling写在后面 前言 本篇文章主要是写给自己看的,研一的时候也曾追求在数学原理上了解即将要学习的自然语言处理,勤奋的记了笔记,研三...
  • 卷积神经网络(Convolutional Neural Network)简称CNN,CNN是所有深度学习课程、书籍必教的模型,CNN在影像识别方面的为例特别强大,许多影像识别的模型也都是以CNN的架构为基础去做延伸。另...
  • 学习笔记11--卷积神经网络基本结构

    千次阅读 2021-12-09 18:35:15
    本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与...卷积神经网络由卷积层、池化层、全连接层(配合
  • 1、卷积神经网络(ConvolutionNeural Network,CNN) 19世纪60年代科学家最早提出感受野(ReceptiveField)。当时通过对猫视觉皮层细胞研究,科学家发现每一个视觉神经元只会处理一小块区域的视觉图像,即感受野。20...
  • 卷积神经网络 (Convolutional Neural Network) 1、网络总体过程: 2、单通道输入卷积: 输入(input)与卷积核(kernel)数乘 最终结果: 3、多通道卷积 4、卷积维数问题 由input(n * w *H )...
  • 预训练卷积神经网络

    2020-02-21 23:18:25
    一、综述 预训练网络(pretrained network)是一个保存好的网络,之前已在大型数据集(通常是大规模图像分类任务)...假设有一个在 ImageNet 数据集(140 万张标记图像,1000 个不同的类别)上训练 好的大型卷积神...
  • ——————————————图书基本信息——————————————————— 书名:《深度学习计算机视觉实战 卷积神经网络、Python 、TensorFlow和Kivy》 定价:98元 ISBN: 9787302558224 出版时间:2020年...
  • 基于GoogLeNet卷积神经网络的农业书籍文字识别.pdf
  • 十四、卷积神经网络(1):介绍卷积神经网络

    千次阅读 多人点赞 2017-09-30 12:10:32
    本篇博客介绍在图像分类中常常使用的卷积神经网络。首先由原始的全连接神经网络忽略了图像的空间结构入手,引出了具有空间结构的卷积神经网络;之后介绍卷积神经网络中的三个基本概念,即局部感受野、权值共享和池化...
  • 基于卷积神经网络图书馆信息安全的验证码识别方法研究.pdf
  • 本书从实用角度着重解析了深度学习中的一类神经网络模型——卷积神经网络,向读者剖析了卷积神经网络的基本部件与工作机理,更重要的是系统性的介绍了深度卷积神经网络在实践应用方面的细节配置与工程经验。...
  • 本篇博客主要介绍了卷积神经网络的结构,并解释了使用这种结构的好处及原理,并总体分析了一个好的卷积神经网络都需要哪些部分。
  • 分享主题 本次分享是在武汉工程大学,主题是《深度卷积神经网络模型:前世、今生与未来》,分享人言有三。 本次分享主题主要是当前卷积神经网络的核心设计思想,未来的重点研究方向,历时约2个小时,PPT超过120页。...
  • 文章目录卷积神经网络前向及反向传播过程数学解析1、卷积神经网络初印象2、卷积神经网络性质3、前向传播3.1、卷积层层级间传递3.2、池化操作3.3、卷积层到全连接层传递4、卷积神经网络的反向传播过程4.1、全连接层...
  • 卷积神经网络(CNN)中feature map、卷积核、卷积核个数、filter、channel的概念解释,以及CNN 学习过程中卷积核更新的理解。
  • 卷积神经网络 情绪识别Nendoroids are a brand of action figures owned by the Good Smile Company. They are usually short in size or chibi-sized and cover a lot of characters from all sorts of mediums ...
  • 卷积神经网络记录(一)基础知识整理

    万次阅读 多人点赞 2018-11-17 20:23:25
    卷积神经网络记录 最近一段时间在学习卷积神经网络的知识,看了很多博客和资料之后,决定自己写一篇记录一下学习地知识,巩固一下所学。 1.卷积神经网络与全连接神经网络的异同 首先来看卷积神经网络之前的网络的...
  • 卷积神经网络是最先落地的深度学习技术之一,被广泛应用于各种现实场景,在许多问题上都取得了超越人类智能的结果。可是深度学习对数学基础知识的要求(微积分、线性代数、概率论、数理统计……),让大部分在门外...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,337
精华内容 2,534
关键字:

关于卷积神经网络的书籍