ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

深度学习_卷积神经

2021-11-08 17:30:39  阅读:194  来源: 互联网

标签:滤波器 运算 卷积 神经 池化 深度 数据 输入


深度学习_卷积神经网络

参考书籍:深度学习入门_基于python的 理论与实现

一. 整体结构

  1. 全连接:相邻层的所有神经元之间都有连接
  2. 基于全连接层(Affine层)的网络的例子
    在这里插入图片描述
  3. 基于CNN的网络的例子:新增了Convolution层和Pooling层(用灰色的方块表示)
    在这里插入图片描述

二. 卷积层

  1. 全连接存在的问题:向全连接层输入时,需要将3维数据拉平为1维数据;而卷积层可以保持形状不变。当输入数据是图像时,卷积层会以3维数据的形式接收输入数据,并同样以3维数据的形式输出至下一层。
  2. 特征图:卷积层的输入输出数据
    (1)输入特征图:卷积层的输入数据
    (2)输出特征图:卷积层的输出数据
  3. 卷积运算:对于输入数据,卷积运算以一定间隔滑动滤波器的窗口并应用,将各个位置上滤波器的元素和输入的对应元素相乘,然后再求和(有时将这个计算称为乘积累加运算),然后,将这个结果保存到输出的对应位置。
  4. 卷积运算的计算顺序:
    在这里插入图片描述
  5. 卷积运算的偏置:向应用了滤波器的元素加上某个固定值(偏置),这个值会被加到应用了滤波器的所有元素上。
    在这里插入图片描述
  6. 填充:在进行卷积层的处理之前,有时要向输入数据的周围填入固定的数据(比如0等);使用填充主要是为了调整输出的大小
  7. 卷积运算的填充处理:向输入数据的周围填入 0(图中用虚线表示填充,并省略了 填充的内容“0”);“幅度为1的填充”是指用幅度为1像素的0填充周围。
    在这里插入图片描述
  8. 步幅:应用滤波器的位置间隔
  9. 步幅为2的卷积运算的例子:
    在这里插入图片描述
  10. 计算输出大小:假设输入大小为(H, W),滤波器大小为(FH, FW),输出大小为(OH, OW),填充为P,步幅为S
    在这里插入图片描述
  11. 对3维数据进行卷积运算的计算顺序:在3维数据的卷积运算中,输入数据和滤波器的通道数要设为相同的值
    在这里插入图片描述
  12. 结合方块思考卷积运算
    在这里插入图片描述
  13. 基于多个滤波器的卷积运算
    在这里插入图片描述
  14. 卷积运算的处理流(追加了偏置项)
    在这里插入图片描述
  15. 批处理:批处理将N次的处理汇总成了1次进行,按(batch_num, channel, height, width)的顺序保存数据
  16. 卷积运算的处理流(批处理)
    在这里插入图片描述

三. 池化层

  1. 池化:缩小高、长方向上的空间的运算,池化的窗口大小会和步幅设定成相同的值。比如,3 × 3的窗口的步幅会设为3,4 × 4的窗口的步幅会设为4等
  2. Max池化是从目标区域中取出最大值,Average池化则是计算目标区域的平均值
    在这里插入图片描述
  3. 池化层的特征:
    (1)没有要学习的参数:池化只是从目标区域中取最大值(或者平均值),所以不存在要学习的参数
    (2)通道数不发生变化:经过池化运算,输入数据和输出数据的通道数不会发生变化,计算是按通道独立进行的
    在这里插入图片描述
    (3)对微小的位置变化具有鲁棒性(健壮):输入数据发生微小偏差时,池化仍会返回相同的结果。因此,池化对输入数据的微小偏差具有鲁棒性
    在这里插入图片描述

四. 卷积层和池化层的实现

  1. im2col:把输入数据展开以适合滤波器(权重)
  2. im2col的示意图
    在这里插入图片描述
  3. 卷积运算的滤波器处理的细节:将滤波器纵向展开为 1列,并计算和im2col展开的数据的矩阵乘积,最后转换(reshape)为输出数据的大小
    在这里插入图片描述
  4. 使用im2col函数:第一个是批大小为1、通道为3的7 × 7的数据,第 二个的批大小为10,数据形状和第一个相同。分别对其应用im2col函数,在这两种情形下,第2维的元素个数均为75。这是滤波器(通道为3、大小为 5 × 5)的元素个数的总和。批大小为1时,im2col的结果是(9,75)。而第2个例子中批大小为10,所以保存了10倍的数据,即(90, 75)。
    在这里插入图片描述
  5. 用im2col来实现卷积层:卷积层的初始化方法将滤波器(权重)、偏置、步幅、填充作为参数接收,滤波器是 (FN, C, FH, FW)的 4 维形状。另外,FN、C、FH、FW分别是 Filter Number(滤波器数量)、Channel、Filter Height、Filter Width的缩写;粗体字部分,用im2col展开输入数据,并用reshape将滤波器展开为2维数组。然后,计算展开后的矩阵的乘积;这里通过reshape(FN,-1)将参数指定为-1,这是 reshape的一个便利的功能。通过在reshape时指定为-1,reshape函数会自动计算-1维度上的元素个数,以使多维数组的元素个数前后一致。比如,(10, 3, 5, 5)形状的数组的元素个数共有750个,指定reshape(10,-1)后,就会转换成(10, 75)形状的数组。
    在这里插入图片描述
  6. 基于NumPy的transpose的轴顺序的更改:通过指定索引(编号),更改轴的顺序
    在这里插入图片描述
  7. 对输入数据展开池化的应用区域(2×2的池化的例子)
    在这里插入图片描述
  8. 池化层的实现流程:池化的应用区域内的最大值元素用灰色表示
    在这里插入图片描述
  9. 池化层的实现
    (1)1.展开输入数据。
    (2)求各行的最大值。
    (3)转换为合适的输出大小。
    注意:最大值的计算可以使用 NumPy 的 np.max方法。np.max可以指定axis参数,并在这个参数指定的各个轴方向上求最大值。
    在这里插入图片描述

五. CNN的可视化

  1. 第 1层权重的可视化
    (1)学习前和学习后的第 1层的卷积层的权重:虽然权重的元素是实数,但是在图像的显示上,统一将最小值显示为黑色(0),最大值显示为白色(255)
    在这里插入图片描述
    (2) 对水平方向上和垂直方向上的边缘有响应的滤波器:输出图像 1中,垂直方向的边缘上出现白色像素,输出图像2中,水平方向的边缘上出现很多白色像素
    在这里插入图片描述
    (3)卷积层的滤波器会提取边缘或斑块等原始信息
  2. 基于分层结构的信息提取
    (1)随着层次加深,提取的信息(正确地讲,是反映强烈的神经元)也越来越抽象
    (2)CNN的卷积层中提取的信息。第1层的神经元对边缘或斑块有响应,第3层对纹理有响应,第5层对物体部件有响应,最后的全连接层对物体的类别(狗或车)有响应
    在这里插入图片描述

六. 具有代表性的 CNN

  1. LeNet
    (1)LeNet的网络结构:
    在这里插入图片描述
    (2)与现在的CNN相比,LeNet有几个不同点:第一个不同点在于激活函数,LeNet中使用sigmoid函数,而现在的CNN中主要使用ReLU函数;此外,原始的LeNet中使用子采样(subsampling)缩小中间数据的大小,而现在的CNN中Max池化是主流。
  2. AlexNet
    (1)AlexNet的网络结构:AlexNet叠有多个卷积层和池化层,最后经由全连接层输出结果
    在这里插入图片描述
    (2)AlexNet和LeNet的差异:激活函数使用ReLU;使用进行局部正规化的LRN(Local Response Normalization)层;使用Dropout

标签:滤波器,运算,卷积,神经,池化,深度,数据,输入
来源: https://blog.csdn.net/qq_42627691/article/details/121210117

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有