共计 3034 个字符,预计需要花费 8 分钟才能阅读完成。
- 摘要
在上一篇分享中,次要介绍了卷积操作,咱们能够通过结构卷积核作用到图像中,比照输出和输入数组就能够准确的找到像素变动的地位。这便是图像物体边缘检测性能。设任意的二维数组 X 的 i 行 j 列的元素为 X[i,j]。如果咱们结构的卷积核输入 Y[i,j]=1,那么阐明输出中 X[i,j] 和 X[i,j+1] 数值不一样。这可能意味着物体的边缘通过这两个元素之间。
在理论图像中,咱们要检测的物体不会呈现在固定的地位,即便咱们间断拍摄同一个物体也会呈现偏移。这会导致同一个边缘对应的输入可能呈现在卷积输入 Y 中的不同地位,从而对前面的模式识别造成艰难。本片分享咱们介绍池化(pooling)层,它的次要作用便是为了缓解卷积层对地位上的适度敏感性。
- 二维最大池化层和均匀池化层
和卷积计算相似,池化层每一次对输出数组的一个固定形窗口中的元素计算输入。该窗口也称池化窗口。与卷积层的运算法令不同,池化层的法令是间接计算池化窗口元素中的最大值或者平均值。所以也别离叫做最大池化和均匀池化。在二维最大池化层中,池化窗口从输出数组的左上角开始,依照从左到右,从上到下的程序,在输出数组中滑动。当池化窗口滑动到某一个地位时,窗口中的输出子数组的最大值就是输入数组中相应地位的元素。
如下图 1 中所示,池化的窗口形态是 2×2 的最大池化,默认步幅都为 1。暗影局部为第一个输入元素和计算所应用的输出元素。输入数组的高和宽别离为 2,其中的 4 个元素由取最大值运算 max 得出:
max(0,1,3,4)=4,
max(1,2,4,5)=5,
max(3,4,6,7)=7,
max(4,5,7,8)=8.
image.png
图 1:2×2 最大池化层图
均匀池化层的计算方法与最大池化层相似,只是将每次求池化窗口中的元素最大值改为求平均值。池化窗口形态为 p×q 的池化层称为 p×q 池化层,其中的池化运算叫作 p×q 池化。
在最开始咱们提到的物体边缘检测的例子。当初咱们将卷积层的输入作为 2×2 最大池化的输出。设该卷积层输出是 X、池化层输入为 Y。无论是 X[i,j] 和 X[i,j+1] 值不同,还是 X[i,j+1] 和 X[i,j+2] 不同,池化层输入均有 Y[i,j]=1。也就是说,应用 2×2 最大池化层时,只有卷积层辨认的模式在高和宽上挪动不超过一个元素,咱们仍然能够将它检测进去。
- 填充、步幅和多通道
和卷积层一样,池化层也能够在输出数组的高和宽两侧填充 0 元素。并能够设置窗口的挪动步幅来扭转输入数组形态。池化层填充和步幅与卷积层填充和步幅的工作机制一样。
池化层在解决多通道输出数组的时候,与卷积层的工作机制是不同的,卷积层中是将每个通道中的输出数组卷积运算后再相加,会导致输入通道变为 1 个。而池化层则是在每个出入通道中池化计算,但不将池化后果相加,能够保障输出通道数与输入通道数雷同。
- LeNet 卷积网络
image.png
图 2:LeNet 卷积网络
如上图中所示,是 LeNet 卷积网络的整体流程图,整体蕴含 8 个网络层,上面咱们将理解每一层的计算。
输出层:咱们应用的数据集是 MNIST 数据集,该数据集中的样本数据都是规格为 32×32 的灰度图,咱们以 1 个样本图片为例。那么咱们输出的图片规格就是 1×1×32×32,示意一个通道输出 1 个 32×32 的数组。
C1 层:C1 层中数组规格为 6×1×28×28,从 1×1×32×32 卷积失去。首先须要 6 个批次的卷积数组,每一个批次中都有 1 个规格为 5×5 的卷积数组,卷积步幅默认为 1。即卷积数组规格为 6×1×5×5。
该卷积层共有 6 +1×5×5×6=156 个参数,其中 6 个偏置参数。这一层网络 ** 有 6×1×28×28=4704 个节点,每个节点和以后层 5×5=25 个节点相连,所以本层卷积层共有 6×(1×28×28)×(1×5×5+1)=122304 个全连贯。
S2 层:S2 层的数组规格为 6×1×14×14,从 1×1×28×28 卷积失去。应用的是 2×2,步幅为 1 的最大池化操作,所以并不扭转批次数,只是将每一个输出数组从 28×28 降到 14×14 的输入数组。
该池化层共有 6×2=12 个可训练参数,以及 6×(1×14×14)×(2×2+1)=5880 个全连贯。
C3 层:C3 层的数组规格为 16×1×10×10,从 6×1×14×14 卷积失去。输入通道数数扭转,所以卷积数组须要 16 批卷积数组,每一批中有 6 个卷积核与输出通道对应,每一个卷积数组规格都是 5×5,步幅为 1。即卷积数组规格为 16×6×5×5。
该卷积层共有 16+1×5×5×16=2416 个参数,其中 16 个偏置参数。这一层网络 ** 有 16×1×10×10=1600 个节点,每个节点和以后层 5×5=25 个节点相连,所以本层卷积层共有 16×(1×10×10)×(1×5×5+1)=41600 个全连贯。
S4 层:S4 层的数组规格为 16×1×5×5,这一层池化与 S2 层池化设置雷同。所以输入数组只扭转每一个数组的规格,不扭转数量。
该池化层共有 16×2=32 个可训练参数,以及 16×(1×5×5)×(2×2+1)=2000 个全连贯。
C5 层:C5 层是规格为 120×1 的一维向量,那么须要将 S4 层数组转换成一维向量,输出的数组规格是 1×(16×1×5×)=1×400。应用全连贯层将 1×400 转为 1×120 的向量。在全连贯层中,每一个节点计算处后果后,都须要再通过激活函数计算,得出的值为输入的值。
该连贯层共有 5×5×16=400 个输出节点,参数个数为 5×5×16×120+120=48120 个,输入节点 120 个。
F6 层:F6 层是规格为 84×1 的一维向量,与 C5 层计算雷同,也是通过全连贯层计算失去。为什么要转成 84 个神经元向量呢,如下图中所示,是所有字符规范格局,规格为 12×7. 所以有 84 个像素点,而后应用 F6 层的向量与这些标准图计算类似度。
该连贯层共有 120 个输出节点,参数个数为 120×84+84=10164 个,输入节点 84 个。
image.png
图 3:字符标准图
输入层:该连贯层共有 84 个输出节点,参数个数为 84×10+10=850 个,输入节点 10 个。
输入层应用 Softmax 函数做多分类,在 Softmax 用于多分类过程中,它将多个神经元的输入,映射到(0,1)区间中,能够看作是每一个类别的概率值,从而实现多分类。Softmax 从字面上来看,能够分成 Soft 和 max 两局部。Softmax 的外围是 Soft,对于图片分类来说,一张图片或多或少都会蕴含其它类别的信息,咱们更期待失去图片对于每个类别的概率值,能够简略了解为每一个类别的可信度;max 就是最大值的意思,抉择概率值最大的当作分类的类别。
上面给出 Softmax 函数的定义
image.png
图 4:Softmax 表达式
其中 zi 是第 i 个节点的输入值,C 是输入节点的个数,即分类类别的个数。通过 Softmax 函数能够将多分类的输入值转换为范畴在 [0,1],并且总和为 1 的概率分布。当应用 Softmax 函数作为输入节点的激活函数的时候,个别应用穿插熵作为损失函数。模型有了损失函数后,就能够应用梯度降落的办法求解最优参数值。
- 总结
本篇咱们次要承接上一次的卷积内容,首先剖析了池化操作的运行原理。而后应用 LeNet 卷积神经网络将一个 32×32 的灰度图的分类过程,剖析了 LeNet 卷积神经网络网络中每一层之间卷积核信息、池化信息、参数个数、全连贯个数,以及最初输入时应用的 Softmax 函数性质。
以上是集体的一些总结,有有余和谬误之处,还请多多留言领导。