深度学习入门基于python的的理论与实现(学习笔记).第七章 卷积神经网络(第一部分)

卷积神经网络(CNN: Convolutional Neural Network)整体结构:
在这里插入图片描述
CNN 的层的连接顺序是“Convolution - ReLU - (Pooling)”(Pooling 层有时会被省略)。还需要注意的是,在上的CNN中,靠近输出的层中使用了之前的“Affine - ReLU”组合。此外,最后的输出层中使用了之前的“Affine - Softmax”组合。这些都是一般的CNN中比较常见的结构。
卷积层负责对图像进行特征提取,池化层负责降采样:保留显著特征、降低特征维度的同时增大感受野。最后的全连接层负责对特征图进行降维后进行激活分类。

  • 卷积层:

将卷积层的输入输出数据称为特征图(feature map)。其中,卷积层的输入数据称为输入特征图(input feature map),输出数据称为输出特征图(output feature map)
- 卷积层存在的问题:
数据的形状被“忽视”了。比如,输入数据是图像时,图像通常是高、 长、通道方向上的3维形状。但是,向全连接层输入时,需要将3维数据拉平为1维数据。图像是3维形状,这个形状中应该含有重要的空间信息。比如,空间上邻近的像素为相似的值、RBG的各个通道之间分别有密切的关联性、相距较远的像素之间没有什么关联等,3维形状中可能隐藏有值得提取的本质模式。但是,因为全连接层会忽视形状,将全部的输入数据作为相同的神经元(同一维度的神经元)处理,所以无法利用与形状相关的信息。

  • 卷积运算(成绩累加运算):
    对于输入数据,卷积运算以一定间隔滑动滤波器的窗口并应用。如下图所示,将各个位置上滤波器的元素和输入的对应元素相乘,然后再求和,将这个结果保存到输出的对应位置。把这个过程在所有位置都进行一遍,就可以得到卷积运算的输出。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    使用填充主要是为了调整输出的大小。比如,对大小为(4, 4) 的输入数据应用(3, 3) 的滤波器时,输出大小变为(2, 2),相当于输出大小比输入大小缩小了2 个元素。这在反复进行多次卷积运算的深度网络会成为问题。为什么呢?因为如果每次进行卷积运算都会缩小空间,那么在某个时刻输出大小就有可能变为1,导致无法再应用卷积运算。为了避免出现这样的情况,就要使用填充。在刚才的例子中,将填充的幅度设为1,那么相对于输入大小(4, 4),输出大小也保持为原来的(4, 4)。因此,卷积运算就可以在保持空间大小不变的情况下将数据传给下一层。

    • 步幅(stride)
      在这里插入图片描述
  • 卷积层输出特征图大小:
    假设输入大小为(H,W),滤波器大小为(FH,FW),输出大小为(OH,OW),填充为P,步幅为S。此时,输出大小为:
    在这里插入图片描述
    设定的卷积核参数必须使上面两式都能除尽,当输出大小无法除尽时(结果是小数时),需要采取报错等对策。顺便说一下,根据深度学习的框架的不同,当值无法除尽时,有时会向最接近的整数四舍五入,不进行报错而继续运行。

  • 三维卷积:
    图像是3维数据,除了高、长方向之外,还需要处理通道方向。通道方向上有多个特征图时,按通道进行输入数据和滤波器的卷积运算,并将结果相加,从而得到输出。
    在这里插入图片描述
    在3维数据的卷积运算中,输入数据和滤波器的通道数要设为相同的值。每个通道的滤波器大小要全部相同。
    在这里插入图片描述
    在这个例子中,数据输出是1张特征图,换句话说,就是通道数为1的特征图。如果要在通道方向上也拥有多个卷积运算的输出,就需要用到多个滤波器(权重)。
    在这里插入图片描述
    因此,滤波器的形状可以写为(output_channel,input_channel,height,width)
    如果再加上偏置运算,则结果如下图所示:
    在这里插入图片描述
    在这里插入图片描述

  • 1X1卷积层:
    1×1 卷积层即为卷积窗口形状为 1×1的多通道卷积层。因为使用了最小窗口,1×1卷积失去了卷积层可以识别高和宽维度上相邻元素构成的模式的功能。实际上, 1×1 卷积的主要计算发生在通道维上。
    在这里插入图片描述
    如上图所示,输出中的每个元素来自输入中在高和宽上相同位置的元素在不同通道之间的按权重累加,这就类似于全连接层。
    在这里插入图片描述
    假设我们将通道维当作特征维,将高和宽维度上的元素当成数据样本,那么 1×1 卷积层的作用与全连接层等价,而且还使空间信息自然地传递到后面的层。即1×1卷积层中可以把通道当作特征,高和宽上的每个元素相当于样本。将输出的通道数设置为类别数之后,再接上后面要讲的全局平均池化层,就可以做到用卷积层代替全连接层了!
    可以这么理解:把每个通道上的二维数据都看作是全连接层上的一个神经元,那么上图就可以看作是一个3输入2输出的全连接层,(2×3)个卷积核就是全连接层的权重

参考博文:
https://blog.csdn.net/weixin_42437114/article/details/106628880

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值