如代码,想获取tensor的维度,但tensor括号内有两个值,不能直接.shape,这该如何获取?

如代码,想获取tensor的维度,但tensor括号内有两个值,不能直接.shape,这该如何获取,求指点!


im = torch.from_numpy(im).to(device)
LOGGER.info(f"im = {colorstr('yellow', im)}")

如上代码,执行后得到tensor,但想获取tensor的维度,但tensor括号内有两个值,不能直接.shape,这该如何获取,求指点!


tensor([[[[0.61176, 0.61176, 0.58431,  ..., 0.83137, 0.83137, 0.83137],
          [0.61176, 0.58431, 0.58824,  ..., 0.83137, 0.83137, 0.83137],
          [0.60000, 0.58824, 0.58431,  ..., 0.83137, 0.83137, 0.83137],
          ...,
          [0.63529, 0.63529, 0.63529,  ..., 0.57647, 0.58039, 0.58039],
          [0.63529, 0.62745, 0.63137,  ..., 0.57647, 0.58039, 0.58039],
          [0.63922, 0.63529, 0.63922,  ..., 0.57647, 0.57647, 0.57647]],

         [[0.61569, 0.61569, 0.58824,  ..., 0.86667, 0.86667, 0.86667],
          [0.61569, 0.58824, 0.59216,  ..., 0.86667, 0.86667, 0.86667],
          [0.60392, 0.59216, 0.58824,  ..., 0.86667, 0.86667, 0.86667],
          ...,
          [0.63529, 0.63137, 0.63137,  ..., 0.60784, 0.61176, 0.61176],
          [0.63137, 0.62353, 0.62745,  ..., 0.60784, 0.61176, 0.61176],
          [0.63922, 0.63137, 0.63529,  ..., 0.60784, 0.60784, 0.60784]],

         [[0.59608, 0.59608, 0.56863,  ..., 0.89020, 0.89020, 0.89020],
          [0.59608, 0.56863, 0.57255,  ..., 0.89412, 0.89412, 0.89412],
          [0.58431, 0.57255, 0.56863,  ..., 0.89412, 0.89412, 0.89412],
          ...,
          [0.61569, 0.61569, 0.61569,  ..., 0.61569, 0.61961, 0.61961],
          [0.61569, 0.60784, 0.61176,  ..., 0.61569, 0.61961, 0.61961],
          [0.61961, 0.61569, 0.61961,  ..., 0.61569, 0.61569, 0.61569]]]], device='cuda:0')

该回答引用ChatGPT

可以使用torch.Tensor.shape或torch.Tensor.size()方法获取tensor的维度,这两种方法等效。对于上述代码中的tensor,可以使用以下代码获取其维度:

im.shape  # 或者 im.size()

这将返回一个元组,其中包含tensor的各个维度大小。例如,如果返回的元组为(1, 3, 224, 224),则说明该tensor是一个大小为1x3x224x224的四维tensor。

该回答引用GPTᴼᴾᴱᴺᴬᴵ
要获取 PyTorch tensor 的维度,可以使用 .shape 属性。对于括号内有两个值的 tensor,可以通过获取 .shape 的前两个元素来得到它的维度信息。例如,对于你的 tensor,可以使用以下代码获取它的维度信息:

dim1, dim2, *rest = im.shape


其中 dim1 和 dim2 就是 tensor 的前两个维度,而 rest 是剩余的维度信息(如果有的话)。你可以根据需要调整代码来获取你所需要的维度信息。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^