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)的输出张量。
------------------------------------------------------------------------------------------------------------------------------
官方解释:
文章来源:https://www.toymoban.com/news/detail-431941.html
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])文章来源地址https://www.toymoban.com/news/detail-431941.html
到了这里,关于实例解读nn.AdaptiveAvgPool2d((1, 1))的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!