pytorch 如何降低Tensor的最后一个维度?

ckocjqey  于 2022-12-13  发布在  其他
关注(0)|答案(2)|浏览(433)

我有个不成熟的问题。
例如,我得到一个Tensor,其大小为:torch.Size([2, 1, 80, 64]) .
我需要把它变成另一个Tensor,大小为:torch.Size([2, 1, 80, 16]) .
有没有什么正确的方法来实现这一点?

wqsoz72f

wqsoz72f1#

存在许多函数来实现维度缩减,并且以下是一些示例:
1.从64个特征中随机选择16个
1.取每四个特征的平均值(64/4=16)
1.使用像PCA这样维度缩减技术
1.应用linear transformation
1.应用convolution function
为了给予一个令人满意的答案,需要更多关于为什么和你想做什么的信息。

o4hqfura

o4hqfura2#

回答者:@打印块_de

切片Tensor

y = x[..., :16]
print(y.shape)
# torch.Size([2, 1, 80, 16])

以步幅4为索引

y = x[..., ::4]
print(y.shape)
# torch.Size([2, 1, 80, 16])

使用任何池化(最大值、平均值等)层(使用自适应池化层时也可以执行相同操作)

pool = nn.MaxPool2d((1, 2), (1, 4))
y = pool(x)
print(y.shape)
# torch.Size([2, 1, 80, 16])

pool = nn.AdaptiveAvgPool2d(output_size=(80, 16))
y = pool(x)
print(y.shape)
# torch.Size([2, 1, 80, 16])

或使用任何缩减运算(总和、平均值、最大值等)手动缩减最后一个维度

相关问题