一、池化层没有需要学习的参数

   池化层一般对应在卷积层的后面,属于一对一的关系(它只影响当前深度的一个节点),不与其它卷积核做连接,所以没有权重参数需要学习。所以反向传播的时候,只需对输入参数求导,不需要进行权值更新。

池化层的反向传播及全连接层(等效1*1卷积)

                                                 图1

二、池化层的反向计算

在池化层进行反向传播时,max-pooling和mean-pooling的方式也采用不同的方式。

对于max-pooling,在前向计算时,是选取的每个2*2区域中的最大值,这里需要记录下最大值在每个小区域中的位置。在反向传播时,只有那个最大值对下一层有贡献,所以将残差传递到该最大值的位置,区域内其他2*2-1=3个位置置零。具体过程如下图,其中4*4矩阵中非零的位置即为前边计算出来的每个小区域的最大值的位置。

池化层的反向传播及全连接层(等效1*1卷积)

 

对于mean-pooling,我们需要把残差平均分成2*2=4份,传递到前边小区域的4个单元即可。具体过程如图:

池化层的反向传播及全连接层(等效1*1卷积)

 

三 、(等效1x1卷积的)全连接层

在CNN网络中,全连接层将卷积层产生的特征图映射成一个固定长度(一般为输入图像数据集中的图像类别数)的特征向量。

这个特征向量包含了输入图像所有特征的组合信息,虽然丢失了图像的位置信息,但是该向量将图像中含有最具有特点的图像特征保留了下来以此完成图像分类任务。从图像分类任务的角度来看,计算机只需要对图像内容进行判定,计算输入图像具体所属类别数值(所属类别概率),将最有可能的类别输出即可完成分类任务。

全连接层需要把输入拉成一个列项向量,如下图所示

         比如图1中从50个2*2的特征图到500个1*1的特征向量的过程:你的输入的feature map是2X2,那么就需要把这个feature map 拉成4X1的列向量,如果你的feature map 的channels是3,也就是你的输入是3X2X2,也就是相当于有了12个像素点,你就需要把feature map 拉成12X1的列向量,这时候,再乘一个权重,这个权重要把12个像素点都包含进去,所以这个权重的矩阵形式应该是1X12,所以经过一个全连接层后的输出就是1X12X12X1=1X1,这时候需要看你的需要多少个1X1的神经元了,如果是3个的话,那么输出就是3X(1X12X12X1)=3X(1X1).这个3在权重矩阵中代表3行,即每一行与输入相乘,得到一个输出。

  因为每个像素特征都需要学习一个权重与输出的1*1结果相连接,所以“等效于1*1卷积”

 

池化层的反向传播及全连接层(等效1*1卷积)

 

参考:

1.https://blog.csdn.net/amds123/article/details/78420185

 

相关文章: