Pytorch学习之AdaptiveAvgPool2d函数
一、简介
torch.nn.AdaptiveAvgPool2d
是 PyTorch 中用于实现自适应平均池化(Adaptive Average Pooling)的模块。
该层将输入特征图的高度和宽度调整到指定的输出尺寸,通过对输入特征图的不同区域取平均值
来生成输出特征图。
与固定大小的池化层(如AvgPool2d
)不同,自适应池化可以处理任意大小的输入特征图
,并将其调整为固定的输出尺寸。
二、语法和参数
torch.nn.AdaptiveAvgPool2d(output_size)
参数
output_size
(int 或 tuple或None): 指定输出特征图的高度和宽度。- 如果是一个整数,则输出特征图的高度和宽度相等;
- 如果是一个元组,则分别指定高度和宽度。
- 如果为None,则输出特征图尺寸和输入保持一致
三、实例
例子1: 将输入特征图调整为 1x1 尺寸
import torch
import torch.nn as nn
# 定义自适应平均池化层,输出尺寸为 1x1
adaptive_pool = nn.AdaptiveAvgPool2d((1, 1))
# 创建一个示例输入特征图,尺寸为 1x3x4x4
input_tensor = torch.randn(1, 3, 4, 4)
# 进行自适应平均池化
output_tensor = adaptive_pool(input_tensor)
print("输出:", output_tensor)
输出:
输出: tensor([[[[-0.4230]],
[[-0.1645]],
[[ 0.2068]]]])
例子2: 将输入特征图调整为 2x2 尺寸
import torch
import torch.nn as nn
# 定义自适应平均池化层,输出尺寸为 2x2
adaptive_pool = nn.AdaptiveAvgPool2d((2, 2))
# 创建一个示例输入特征图,尺寸为 1x3x4x4
input_tensor = torch.randn(1, 3, 4, 4)
# 进行自适应平均池化
output_tensor = adaptive_pool(input_tensor)
print("输出:", output_tensor)
输出:
输出: tensor([[[[ 0.1580, -0.1175],
[ 0.0783, -0.0728]],
[[-0.2235, 0.1540],
[ 0.8765, -0.3074]],
[[ 0.0404, 0.5360],
[ 0.0769, 1.0124]]]])
例子3: 将输入特征图调整为不同的宽和高
import torch
import torch.nn as nn
# 定义自适应平均池化层,输出尺寸为 3x2
adaptive_pool = nn.AdaptiveAvgPool2d((3, 2))
# 创建一个示例输入特征图,尺寸为 1x3x4x4
input_tensor = torch.randn(1, 3, 4, 4)
# 进行自适应平均池化
output_tensor = adaptive_pool(input_tensor)
print("输出:", output_tensor)
输出:
输出: tensor([[[[ 0.6717, -0.1523],
[ 0.7000, -0.3135],
[-0.0811, -0.2327]],
[[-0.7094, 0.7487],
[-0.2777, 0.4406],
[-0.1335, 0.7731]],
[[ 0.2006, -0.2842],
[-0.5824, -0.1561],
[-0.6107, -0.1758]]]])
四、注意事项
AdaptiveAvgPool2d
可以处理任意大小的输入特征图,并将其调整为指定的输出尺寸。- 该层对输入特征图的每个区域进行平均池化,因此输出特征图的值是输入特征图对应区域的平均值。
- 在使用该层时,确保【输入特征图的尺寸 ≥ \geq ≥输出尺寸】,以避免出现错误。