【问题标题】:Calculate mean across one specific dimension of a 4D tensor in Pytorch在 Pytorch 中计算 4D 张量的一个特定维度的平均值
【发布时间】:2020-04-13 13:57:18
【问题描述】:

我有一个形状为 [66,7,7,1024] 的 PyTorch 视频特征张量,我需要将其转换为 [1024,66,7,7]。如何重新排列张量形状?另外,如何在dimension=1 中执行均值?即,在执行尺寸为 66 的平均之后,我需要张量为 [1024,1,7,7]。

我尝试计算维度=1 的平均值,但未能将其替换为平均值。我无法想象一个 4D 张量,其中一维被其均值取代。

编辑: 我试过torch.mean(my_tensor,dim = 1)。但这会给我返回一个形状为 [1024,7,7] 的张量。 4D 张量正在转换为 3D。但我希望它保持 4D 形状,形状为 [1024,1,7,7]。

非常感谢。

【问题讨论】:

  • 查看numpy.transpose。新轴将是 - (3,0,1,2) 或 (3,0,2,1)。
  • @Divakar transpose 给了我 (3,1,2,0)。我做错了吗?
  • 我的意思是np.transpose(a,(3,0,1,2)),a 是输入数组。另外,在 PyTorch 中检查 numpy.transpose 的等价物。另外,不确定您所说的转置给您 (3,1,2,0) 是什么意思。
  • 我可以使用 torch.from_numpy(my_numpy_features.transpose([3,0,1,2])) 将形状 [3,0,1,2] 从 numpy 转换为张量。
  • 将keepdim=True 与mean 方法一起使用。

标签: python numpy computer-vision pytorch tensor


【解决方案1】:

问题的第一部分已在 cmets 部分得到解答。所以我们可以使用tensor.transpose([3,0,1,2])将张量转换为[1024,66,7,7]的形状。

现在时间维度上的平均值可以通过 torch.mean(my_tensor, dim=1) 这将给出一个形状为[1024,7,7] 的 3D 张量。 为了获得形状为[1024,1,7,7] 的张量,我必须在维度=1 中解压:

tensor = tensor.unsqueeze(1)

【讨论】:

猜你喜欢
  • 2022-01-24
  • 1970-01-01
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
  • 2020-11-17
  • 2015-02-23
  • 2019-01-05
  • 2019-10-27
相关资源
最近更新 更多