一般一个神经网络的一层包括一个卷积和一个池化,这里主要讲述对输入和输出的尺寸的理解:
一、卷积
首先input输入矩阵,weight权值矩阵(滤波器)如下图429是由weight与input对应位置相乘再相加得到。
然后是步长stride和边界padding
像我们在上面看到的一样,过滤器或者说权值矩阵,在整个图像范围内一次移动一个像素。我们可以把它定义成一个超参数,从而来表示我们想让权值矩阵在图像内如何移动。如果权值矩阵一次移动一个像素,我们称其步长为 1。下面我们看一下步长为 2 时的情况:weight从右下角的204跳过113直接移步到109
可以看见当我们增加步长值的时候,图像的规格持续变小。在输入图像四周填充 0 边界可以解决这个问题。我们也可以在高步长值的情况下在图像四周填加不只一层的 0 边界。如下图:weight中心直接放到18然后依次54,51(stride=1时)
不填充0时为valid padding,填充0时为same padding (输入输出图像大小相同)
下面是三维立体卷积:
一幅图像不仅有灰度特征,有时我们也想检测它的彩色特征(RGB),我们假设一幅图像为6*6*3,这里的 3 指的是三个颜色通道,用nc表示。你可以把它想象成三个 6×6图像的堆叠。为了检测图像的边缘或者其他的特征,不是把它跟原来的 3×3 的过滤器做卷积,而是跟一个三维的过滤器,它的维度是 3×3×3,这样这个过滤器也有三层,对应红绿、蓝三个通道。
注意4*4中第一个数是由27个数字相加得到,二这27 个数字是由weight对应6*6*3中的左上角的3*3*3立方体对应相乘得到。
这里讲一个输出维度计算问题:
网上例题:
反卷积(上采样)输出特征尺寸公式:W' = (W-1)S+F-2P
二、池化层
有时图像太大,我们需要减少训练参数的数量,它被要求在随后的卷积层之间周期性地引进池化层。池化的唯一目的是减少图像的空间大小。池化在每一个纵深维度上独自完成,因此图像的纵深保持不变。池化层的最常见形式是最大池化(还有均值池化等等)。
如下图:nc有两个术语,通道或者深度