深度学习基础课:最大池化层的前向传播推导

大家好~本课程为“深度学习基础班”的线上课程,带领同学从0开始学习全连接和卷积神经网络,进行数学推导,并且实现可以运行的Demo程序

线上课程资料:


(资料图)

本节课录像回放

加QQ群,获得ppt等资料,与群主交流讨论:106047770

本系列文章为线上课程的复盘,每上完一节课就会同步发布对应的文章

本课程系列文章可进入索引查看:深度学习基础课系列文章索引

回顾相关课程内容

为什么要学习本课

主问题:如何推导最大池化层的前向传播?

\[a_{i,j} = max(\begin{bmatrix}x_{i * stride, j * stride} & \cdots & x_{i * stride + stride - 1, j * stride } \\\vdots & \ddots & \vdots \\x_{i * stride, j * stride + stride - 1} & \cdots & x_{i * stride + stride - 1, j * stride + stride - 1} \\\end{bmatrix} )\]\[用x_{i,j}来表示输入Feature Map的第i行第j列元素; \\用a_{i,j}表示输出Feature Map的第i行第j列元素;\\\]\[a_{d, i,j} = max(\begin{bmatrix}x_{d, i * stride, j * stride} & \cdots & x_{d, i * stride + stride - 1, j * stride } \\\vdots & \ddots & \vdots \\x_{d, i * stride, j * stride + stride - 1} & \cdots & x_{d, i * stride + stride - 1, j * stride + stride - 1} \\\end{bmatrix} )\]\[用x_{d, i,j}来表示输入Feature Map的第d层第i行第j列元素; \\用a_{d, i,j}表示输出Feature Map的第d层第i行第j列元素;\\\]\[W_2 = ? \\H_2 = ? \\其中,W_2是输出Feature Map的宽度,H_2是输出Feature Map的高度; \\W_1是输入Feature Map的宽度,H_1是输入Feature Map的高度;\\F是Filter的宽度(等于高度),S是步幅\]

答:

\[W_2 = \frac{W_1 - F}{S} + 1\\H_2 = \frac{H_1 - F}{S} + 1 \\其中,W_2是输出Feature Map的宽度,H_2是输出Feature Map的高度; \\W_1是输入Feature Map的宽度,H_1是输入Feature Map的高度;\\F是Filter的宽度(等于高度),S是步幅\]

任务:实现最大池化层的前向传播

["f:",[    [2,2,[3,2,1,2]],    [2,2,[5,2,2,2]]    ]]

我们可以手动计算下\(a_{0,0,0}\),结果等于3,与输出的结果相同,证明forward的实现是正确的

推荐内容