美文网首页
卷积神经网络基础

卷积神经网络基础

作者: 英文名字叫dawntown | 来源:发表于2020-02-19 18:51 被阅读0次

    1. 一些相关概念

    1.1 二维互相关运算

    一个二维输入数组和一个二维核(kernel,卷积核或者过滤器)数组进行如下图所示运算。卷积核的尺寸通常小于输入数组,卷积核在输入数组上滑动,在每个位置上,卷积核与该位置处的输入子数组按元素相乘并求和,得到输出数组中相应位置的元素。


    互相关运算

    1.2 二维卷积层

    二维卷积层将输入和卷积核做互相关运算,并加上一个标量偏置来得到输出。卷积层的模型参数包括卷积核标量偏置
    真正的卷积运算是卷积核旋转180度再做互相关运算,但是由于核是学习出来的,所以二者在CNN中并无区别。

    1.3 特征图和感受野

    二维卷积层输出的二维数组可以看作是输入在空间维度(宽和高)上某一级的表征,也叫特征图(feature map)。
    影响元素的前向计算的所有可能输入区域(可能大于输入的实际尺寸)叫做的感受野(receptive field)。

    1.4 填充、步幅和池化

    填充(padding)是指在输入高和宽的两侧填充元素(通常是0元素),图2里我们在原输入高和宽的两侧分别添加了值为0的元素。padding为1即在外围添加了一圈0。
    在互相关运算中,卷积核在输入数组上滑动,每次滑动的行数与列数即是步幅(stride)。就是每一步走几个像素。
    填充和步幅影响输出特征图大小:
    \lfloor(n_h+p_h-k_h+s_h)/s_h\rfloor \times \lfloor(n_w+p_w-k_w+s_w)/s_w\rfloor

    池化层主要用于缓解卷积层对位置的过度敏感性。同卷积层一样,池化层每次对输入数据的一个固定形状窗口(又称池化窗口)中的元素计算输出,池化层直接计算池化窗口内元素的最大值或者平均值,该运算也分别叫做最大池化或平均池化。


    最大池化操作

    在处理多通道输入数据时(如下),池化层对每个输入通道分别池化,但不会像卷积层那样将各通道的结果按通道相加。这意味着池化层的输出通道数与输入通道数相等。

    1.5 多输入通道和多输出通道

    假设输入数据的通道数为c_i,卷积核形状为k_h\times k_w,我们为每个输入通道各分配一个形状为k_h\times k_w的核数组,c_i个互相关运算的二维输出按通道相加,得到一个二维数组作为输出。我们把个核数组在通道维上连结,即得到一个形状为c_i\times k_h\times k_w的卷积核。

    多通道输入卷积
    如果希望得到含多个通道的输出,我们可以为每个输出通道分别创建形状为的核数组,将它们在输出通道维上连结,卷积核的形状即。

    1.6 1\times 1卷积

    1\times 1卷积核可在不改变高宽的情况下,调整通道数。1\times 1卷积核不识别高和宽维度上相邻元素构成的模式,其主要计算发生在通道维上。假设我们将通道维当作特征维,将高和宽维度上的元素当成数据样本,那么1\times 1卷积层的作用与全连接层等价。

    1x1卷积层

    1.7 卷积层和全连接层的对比

    1. 全连接层把图像展平成一个向量,在输入图像上相邻的元素可能因为展平操作不再相邻,网络难以捕捉局部信息。而卷积层的设计,天然地具有提取局部信息的能力。
    2. 卷积层的参数量更少。不考虑偏置的情况下,一个形状为(c_i, c_o, h, w)的卷积核的参数量是c_i \times c_o \times h \times w,与输入图像的宽高无关。假如一个卷积层的输入和输出形状分别是(c_1, h_1, w_1)(c_2, h_2, w_2),如果要用全连接层进行连接,参数数量就是c_1 \times c_2 \times h_1 \times w_1 \times h_2 \times w_2。使用卷积层可以以较少的参数数量来处理更大的图像。

    pytorch的CNN相关模块中,输入输出形状为(N, C, H_{in/o}, W_{in/o}),即:batch_size, channel, height, width

    相关文章

      网友评论

          本文标题:卷积神经网络基础

          本文链接:https://www.haomeiwen.com/subject/qlbafhtx.html