![图片[1]-8.3 池化层-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-345.png)
![图片[2]-8.3 池化层-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-346.png)
![图片[3]-8.3 池化层-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-347.png)
![图片[4]-8.3 池化层-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-348.png)
池化的另一个特点是对微小偏差具有鲁棒性,数据发生微小偏差时,池化可能会返回相同的结果。例如,数据在宽度方向上偏离
1个元素,返回的结果不变。
![图片[5]-8.3 池化层-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/11/image-349.png)
API使用:
# 最大池化
torch.nn.MaxPool2d(kernel_size, stride, padding)
# 平均池化
torch.nn.AvgPool2d(kernel_size, stride, padding)
例:
import torch
import matplotlib.pyplot as plt
# 读取图片
img = plt.imread("data/duck.jpg")
print("图片数据形状:", img.shape)
# 将图片数据转换为张量并改变形状
input = torch.tensor(img).permute(2, 0, 1).float()
print("输入特征图形状:", input.shape)
# 初始化卷积核
conv = torch.nn.Conv2d(in_channels=3, out_channels=3, kernel_size=9, stride=3, padding=0, bias=False)
# 对输入特征图进行卷积操作
output1 = conv(input)
print("卷积后输出特征图形状:", output1.shape)
# 初始化池化层
pool = torch.nn.MaxPool2d(kernel_size=6, stride=6, padding=1)
# 进行池化操作
output2 = pool(output1)
print("池化后输出特征图形状:", output2.shape)
# 将输出特征图转换为图片
output1 = torch.clamp(output1.int(), 0, 255) # 限制输出在0到255之间
output1 = output1.permute(1, 2, 0).detach().numpy()
output2 = torch.clamp(output2.int(), 0, 255) # 限制输出在0到255之间
output2 = output2.permute(1, 2, 0).detach().numpy()
fig, ax = plt.subplots(1, 3, figsize=(15, 5))
ax[0].imshow(img)
ax[1].imshow(output1)
ax[2].imshow(output2)
plt.axis("off")
plt.show()
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END















请登录后查看评论内容