【发布时间】:2020-12-28 00:53:20
【问题描述】:
我正在尝试按照here 的说明计算 alpha 值。
我有一个形状为(1, 512, 14, 14) 的张量作为参数。要计算 alpha 值,我需要计算除通道维度之外的所有维度的平均值,因此输出的形状为 (1, k, 1, 1),本质上是 (k,)。
如何在 PyTorch 中做到这一点? 谢谢!
【问题讨论】:
我正在尝试按照here 的说明计算 alpha 值。
我有一个形状为(1, 512, 14, 14) 的张量作为参数。要计算 alpha 值,我需要计算除通道维度之外的所有维度的平均值,因此输出的形状为 (1, k, 1, 1),本质上是 (k,)。
如何在 PyTorch 中做到这一点? 谢谢!
【问题讨论】:
您可以置换第一个和第二个轴以将通道维度保持在dim=0,然后展平所有其他维度,最后,在新轴上取平均值:
x.permute(1, 0, 2, 3).flatten(start_dim=1).mean(dim=1)
这是形状,一步一步来:
>>> x.permute(1, 0, 2, 3).shape
(512, 1, 14, 14)
>>> x.permute(1, 0, 2, 3).flatten(start_dim=1).shape
(512, 1, 196)
>>> x.permute(1, 0, 2, 3).flatten(start_dim=1).mean(dim=1).shape
(512,)
【讨论】: