【问题标题】:Pytorch change format of tensors from BxWxH to B, N, 3Pytorch 将张量的格式从 BxWxH 更改为 B, N, 3
【发布时间】:2021-03-02 20:03:14
【问题描述】:

我有一个形状为 BxWxH(B=Batch 大小,W=Width,H=Height)的张量 A,我想将其更改为形状为 BxNx3 的张量 B(B=Batch 大小,N=点数=宽*高)。

张量 A 表示深度图,例如tensor[0,1,2] => 给出第 0 批像素 (1,2) 的深度值。

张量 B 也表示深度图,但格式不同。张量B中的每个点都有以下三个维度:(x坐标,y坐标,深度值)。

如何将张量 A 转换为张量 B?

【问题讨论】:

  • 您确定是WxH 而不是HxW
  • 也可以是HxW。在我的情况下,这并不重要。问题是从 1d 深度值到 3d 格式(x、y、深度值)。

标签: pytorch


【解决方案1】:

您正在寻找meshgrid 为您提供每个像素的xy 坐标:

b, w, h = A.shape
x, y = torch.meshgrid(torch.arange(w), torch.arange(h))
B = torch.cat((x[None, ...], y[None, ...], A), dim=0)
B = B.reshape(b, w*h, 3) 

【讨论】:

    猜你喜欢
    • 2019-04-27
    • 2021-03-13
    • 2020-08-31
    • 2019-01-23
    • 1970-01-01
    • 2022-10-17
    • 2018-10-23
    • 2020-08-05
    • 2019-07-29
    相关资源
    最近更新 更多