实现 CNN 中常用的 2D 最大池化(Max Pooling)前向传播。
给定输入特征图 X(形状 C×H×W,C 为通道数)、池化窗口大小 k(kernel size,正方形窗口)、步长 s(stride),输出特征图 Y(形状 C×Hout×Wout)。
输出尺寸:
Hout=⌊(H−k)/s⌋+1,Wout=⌊(W−k)/s⌋+1每个输出位置取对应窗口内的最大值:
Y[c,i,j]=0≤u<k, 0≤v<kmaxX[c, s⋅i+u, s⋅j+v]第一行包含五个整数 C,H,W,k,s(1≤C≤8,2≤H,W≤32,1≤k≤H,1≤k≤W,1≤s≤4,k≤H,k≤W)。
接下来 C 组数据,每组 H 行,每行 W 个浮点数,表示一个通道的特征图。
输出 C 组数据,每组 Hout 行,每行 Wout 个浮点数,表示池化后的特征图,保留 2 位小数。每组之间无空行分隔。
输入
1 4 4 2 2
1.0 2.0 3.0 4.0
5.0 6.0 7.0 8.0
9.0 10.0 11.0 12.0
13.0 14.0 15.0 16.0
输出
6.00 8.00
14.00 16.00
说明
2×2 窗口、步长 2 的池化把 4×4 切成 2×2 个不重叠区域。
左上区域 {1,2,5,6} 最大 6;右上 {3,4,7,8} 最大 8;左下 {9,10,13,14} 最大 14;右下 {11,12,15,16} 最大 16。
输入
2 3 3 2 1
1.0 2.0 3.0
4.0 5.0 6.0
7.0 8.0 9.0
-1.0 -2.0 -3.0
-4.0 -5.0 -6.0
-7.0 -8.0 -9.0
输出
5.00 6.00
8.00 9.00
-1.00 -2.00
-4.00 -5.00
说明
k=2,s=1:窗口大小 2、步长 1(重叠移动)。
通道 0:四个 2×2 子块的最大值分别是 5,6,8,9。
通道 1:全为负数,最大即“最不负”——−1,−2,−4,−5。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册