我有个不成熟的问题。例如,我得到一个Tensor,其大小为:torch.Size([2, 1, 80, 64]) .我需要把它变成另一个Tensor,大小为:torch.Size([2, 1, 80, 16]) .有没有什么正确的方法来实现这一点?
torch.Size([2, 1, 80, 64])
torch.Size([2, 1, 80, 16])
wqsoz72f1#
存在许多函数来实现维度缩减,并且以下是一些示例:1.从64个特征中随机选择16个1.取每四个特征的平均值(64/4=16)1.使用像PCA这样维度缩减技术1.应用linear transformation1.应用convolution function为了给予一个令人满意的答案,需要更多关于为什么和你想做什么的信息。
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])
或使用任何缩减运算(总和、平均值、最大值等)手动缩减最后一个维度
2条答案
按热度按时间wqsoz72f1#
存在许多函数来实现维度缩减,并且以下是一些示例:
1.从64个特征中随机选择16个
1.取每四个特征的平均值(64/4=16)
1.使用像PCA这样维度缩减技术
1.应用linear transformation
1.应用convolution function
为了给予一个令人满意的答案,需要更多关于为什么和你想做什么的信息。
o4hqfura2#
回答者:@打印块_de
切片Tensor
以步幅4为索引
使用任何池化(最大值、平均值等)层(使用自适应池化层时也可以执行相同操作)
或使用任何缩减运算(总和、平均值、最大值等)手动缩减最后一个维度