其他分享
首页 > 其他分享> > 深度学习_卷积神经

深度学习_卷积神经

作者:互联网

深度学习_卷积神经网络

参考书籍:深度学习入门_基于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