深度学习笔记:卷积神经网络(1)

本文介绍了卷积神经网络(CNN)的基本结构,包括卷积层、池化层及其作用。讨论了全连接层在图像识别上的局限性,并详细解释了卷积运算的原理,如填充和步幅的影响。同时,提到了三维数据卷积以及批处理和池化层的操作。在Python中实现卷积层和池化层时,利用im2col函数进行数据转换。
摘要由CSDN通过智能技术生成

1 卷积神经网络整体结构

卷积神经网络(CNN)相比全连接网络多了卷积层和池化层。对于全连接网络,所有相邻层的神经元都用Affine层进行连接,如图中即为Affine-ReLU的连接组合。
在这里插入图片描述
卷积神经网络则包含卷积层和池化层与激活函数相连,其结构如下:
在这里插入图片描述

2 全连接层对图象识别的局限性

我们之前一直使用全连接网络识别mnist数据集,但这其实是一个低效的方法。对于28 X 28的图片信息,我们必须将其拉长成1 X 784的数据再传入网络。这一操作不但需要大量神经元作为输入层,而且当我们将二维图片拉伸为一维后,会丢失原图中部分特征信息,如邻近像素值的关系。

CNN可以保留原图二维的形状同时识别图像,从而保留原图中的各类特征。CNN卷积层输入输出数据被称为特征图

3 卷积运算

在这里插入图片描述
如图,卷积运算中我们用一个矩阵(被称为卷积核),在图片矩阵中“滑动”,并和图片矩阵重合部分进行内积运算(即将对应位置元素相乘在加和)。最终将各个部分内积结果汇总成一个新的矩阵作为输出特征图

填充(paddling):通过在原图片矩阵周围拓展0以增大原矩阵形状,这一操作用于控制输出特征图的形状和大小。
在这里插入图片描述
如图,使用1的填充,可以使得输出特征图大小和原矩阵一样为4 X 4,这样防止了深度学习中由于不断卷积导致矩阵被不断缩小。

步幅(stride):步幅为每一次卷积核在图片上移动的步长,步长会对提取到的特征和输出特征图形状有影响

对于一个形状(w,h)的输入图,步幅为S,填充为P,卷积核(cw, ch),输出特征图形状为((w + 2P - cw) / s + 1, (h + 2P - ch) / 2 + 1)

三维数据卷积运算

对于有多通道的图片(如RGB图片),需要使用和通道数一致的卷积核数量,其得到的特征图通道数恒为1.可以使用多个卷积核分别和图片做卷积运算,将每一个运算得到的特征图累积成一个多通道特征图

在这里插入图片描述
在这里插入图片描述
如图,对于形状为(C,H,W)的输入图,使用FN个形状为(C,FH,FW)的卷积核,得到形状为(FN,OH,OW)的输出特征图

4 批处理

和全连接网络的批处理类似,卷积神经网络批处理数据为4维数据,按照(batch_num, channel, height, width)的顺序保存数据

池化层

池化层会缩小特征图长宽方向上大小,其作用为将一片区域内的元素缩为一个元素。如Max池化取该区域内最大值,而Average池化取区域所有元素平均值。(在图像识别中我们一般使用max池化)

一般来说,我们池化窗口的大小和卷积核步幅设为相同值,如下图中池化层窗口为2 X 2,同时卷积核步幅也为2
在这里插入图片描述
池化层不存在参数,因此不需要进行学习。另外池化层不会改变输入输出的通道数。对输入特征图的每一个通道池化层会单独处理

python实现卷积层和池化层

实现卷积层可以使用im2col函数,该函数将批处理的4维数据转换为2维矩阵以适合滤波器(权重)。如对于通道为3的7X7数据。im2col展开结果为

im2col的参数
在这里插入图片描述

def im2col(input_data, filter_h, filter_w, stride=1, pad=0):
    """

    Parameters
    ----------
    input_data : 由(数据量, 通道, 高, 长)的4维数组构成的输入数据
    filter_h : 滤波器的高
    filter_w : 滤波器的长
    stride : 步幅
    pad : 填充

    Returns
    -------
    col : 2维数组
    """
    N, C, H, W = input_data.shape
    out_h = (H + 2*pad - filter_h)//stride + 1
    out_w = (W + 2*pad - filter_w)//stride + 1

    img = np.pad(input_data, [(0,0), (0,0), (pad, pad), (pad, p
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值