在手写过一个卷积的实现之后,池化算法的手写就会变得简单很多。
就像之前介绍的那样,池化没有卷积的 dilation 参数,而 pad 参数和 stride 参数的作用和卷积一样。
因此,池化算法,在长宽方向的计算公式和卷积一样,公式的介绍查看:卷积长宽方向的计算公式。
池化比卷积还有一个简单的地方在于,它没有通道维度的累加操作,它每个通道是独立计算的,这样整体池化算法的复杂度和计算量就要比卷积少很多。
下面看下池化算法用 python 如何通过多个循环嵌套的方式来实现。
说明一下,这种实现方式和之前卷积的实现方式类似,都是最原始最朴素的实现,是对算法实现最完美的显示。
在我们对算法原理有了更深的理解之后,可以尝试用其他方法来实现,比如卷积可以进行行列变换,通过 img2col 算法来实现一个更加快速的计算方法。
还是先看图,照着图来实现比较好。
首先池化核是没有参数的,它就是一个形状为 [kh, kw]