实例解读nn.AdaptiveAvgPool2d((1, 1))

AdaptiveAvgPool2d在PyTorch中用于执行2D自适应平均池化,根据输入张量调整池化区域以得到指定大小的输出,如(1,1)则压缩为空间维度为1的张量。此操作常用于网络的全局池化层,将任意尺寸输入转换为固定大小特征向量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nn.AdaptiveAvgPool2d((1, 1))在PyTorch中创建一个AdaptiveAvgPool2d类的实例。该类在输入张量上执行2D自适应平均池化。

自适应平均池化是一种池化操作,它计算每个输入子区域的平均值并产生一个指定大小的输出张量。子区域的大小是根据输入张量的大小和输出张量的期望大小自动确定的。

在这种情况下,通过将(1, 1)作为参数传递给nn.AdaptiveAvgPool2d,输出张量的期望大小被指定为(1, 1)。这意味着输出张量的空间尺寸(H_out,W_out)=(1,1)。

当一个形状为(N, C, H_in, W_in)的输入张量通过这个AdaptiveAvgPool2d层时,它计算每个(H_in, W_in)子区域的平均值并产生一个形状为(N, C, H_out, W_out)=(N, C, 1, 1)的输出张量。

举个例子:

import torch.nn as nn

adaptive_avg_pool = nn.AdaptiveAvgPool2d((1, 1))

x = torch.randn(64, 512, 4, 4)
y = adaptive_avg_pool(x)

print(y.shape) # torch.Size([64, 512, 1, 1])

在这个例子中,创建了一个输出大小为(1, 1)的AdaptiveAvgPool2d层。当一个形状为(64, 512, 4, 4)的输入张量通过该层时,它计算每个(4, 4)子区域的平均值并产生一个形状为(64 ,512 ,1 ,1)的输出张量。

------------------------------------------------------------------------------------------------------------------------------

官方解释:

 

m = nn.AdaptiveAvgPool2d(7)
input = torch.randn(1, 64, 10, 9)
output = m(input)
print(output.shape)

输出:torch.Size([1, 64, 7, 7])

m = nn.AdaptiveAvgPool2d((5, 7))
input = torch.randn(1, 64, 8, 9)
output = m(input)
print(output.shape)

输出:torch.Size([1, 64, 5, 7])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子燕若水

吹个大气球

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值