在 Pytorch 中计算 4D 张量的一个特定维度的平均值
Calculate mean across one specific dimension of a 4D tensor in Pytorch
我有一个形状为 [66,7,7,1024]
的 PyTorch 视频特征张量,我需要将其转换为 [1024,66,7,7]
。如何重新排列张量形状?另外,如何在 dimension=1
之间执行均值?即,在执行大小为 66 的维度的平均值之后,我需要张量为 [1024,1,7,7]
.
我试图计算维度=1 的平均值,但未能将其替换为平均值。我无法想象一个 4D 张量,其中一维被其均值代替。
编辑:
我试过 torch.mean(my_tensor, dim=1)。但是这个 returns 我是一个形状为 [1024,7,7] 的张量。 4D 张量正在转换为 3D。但我希望它保持 4D 形状 [1024,1,7,7].
非常感谢。
第一部分问题已经在评论区回答了。所以我们可以使用 tensor.transpose([3,0,1,2])
将张量转换为形状 [1024,66,7,7]
.
现在时间维度上的均值可以通过
torch.mean(my_tensor, dim=1)
这将给出形状为 [1024,7,7]
的 3D 张量。
要获得形状为 [1024,1,7,7]
的张量,我必须在 dimension=1:
中解压缩
tensor = tensor.unsqueeze(1)
我有一个形状为 [66,7,7,1024]
的 PyTorch 视频特征张量,我需要将其转换为 [1024,66,7,7]
。如何重新排列张量形状?另外,如何在 dimension=1
之间执行均值?即,在执行大小为 66 的维度的平均值之后,我需要张量为 [1024,1,7,7]
.
我试图计算维度=1 的平均值,但未能将其替换为平均值。我无法想象一个 4D 张量,其中一维被其均值代替。
编辑: 我试过 torch.mean(my_tensor, dim=1)。但是这个 returns 我是一个形状为 [1024,7,7] 的张量。 4D 张量正在转换为 3D。但我希望它保持 4D 形状 [1024,1,7,7].
非常感谢。
第一部分问题已经在评论区回答了。所以我们可以使用 tensor.transpose([3,0,1,2])
将张量转换为形状 [1024,66,7,7]
.
现在时间维度上的均值可以通过
torch.mean(my_tensor, dim=1)
这将给出形状为 [1024,7,7]
的 3D 张量。
要获得形状为 [1024,1,7,7]
的张量,我必须在 dimension=1:
tensor = tensor.unsqueeze(1)