摘要
本文给出 MaxPool 函数的定义, 并求解其在反向传播中的梯度
相关
配套代码, 请参考文章 :
Python和PyTorch对比实现池化层MaxPool函数及反向传播
系列文章索引 :
https://blog.csdn.net/oBrightLamp/article/details/85067981
正文
池化是一种尺寸缩小操作, 可以将大尺寸的图片缩小, 集约特征.
1. 池化层 MaxPool 函数的定义
本文约定矩阵元素的脚标从 0 开始.
当 X 为 m x n 矩阵, 卷积核尺寸 2 x 2, 步长为 1 时 :
y i j = m a x ( x i , j ,    x i , j + 1 ,    x i + 1 , j ,    x i + 1 , j + 1 )    i ⩽ m − 2    j ⩽ n − 2 y_{ij} = max(x_{i,j},\; x_{i,j+1},\; x_{i+1,j},\; x_{i+1,j+1})\\ \;\\ i\leqslant m-2 \\ \;\\ j\leqslant n-2 \\ yij=max(xi,j,xi,j+1,xi+1,j,xi+1,j+1)i⩽m−2j⩽n−2
当 X 为 m x n 矩阵, 卷积核尺寸 p x q, 步长为 1 时 :
r = 0 , 1 , 2 , 3 , ⋯   , p − 1 s = 0 , 1 , 2 , 3 , ⋯   , q − 1 y i j = m a x ( x i + r , j + s ) i ⩽ m − p j ⩽ n − q r = 0,1,2,3,\cdots,p-1\\ s = 0,1,2,3,\cdots,q-1\\ y_{ij} = max(x_{i+r,j+s}) \\ i\leqslant m-p\\ j\leqslant n-q\\ r=0,1,2,3,⋯,p−1s=0,1,2,3,⋯,q−1yij=max(xi+r,j+s)i⩽m−pj⩽n−q
当 W 为 p x q 矩阵, 步长为 t, 为保证整除, 填充后的 X 是 m x n 矩阵时 :
r = 0 , 1 , 2 , 3 , ⋯   , p − 1 s = 0 , 1 , 2 , 3 , ⋯   , q − 1 y i j = m a x ( x i ⋅ t + r , j ⋅ t + s ) i ⩽ ( m − p ) / t j ⩽ ( n − q ) / t r = 0,1,2,3,\cdots,p-1\\ s = 0,1,2,3,\cdots,q-1\\ y_{ij} = max(x_