PyTorch: How to get the shape of a Tensor as a list of int PyTorch: How to get the shape of a Tensor as a list of int python python

PyTorch: How to get the shape of a Tensor as a list of int


For PyTorch v1.0 and possibly above:

>>> import torch>>> var = torch.tensor([[1,0], [0,1]])# Using .size function, returns a torch.Size object.>>> var.size()torch.Size([2, 2])>>> type(var.size())<class 'torch.Size'># Similarly, using .shape>>> var.shapetorch.Size([2, 2])>>> type(var.shape)<class 'torch.Size'>

You can cast any torch.Size object to a native Python list:

>>> list(var.size())[2, 2]>>> type(list(var.size()))<class 'list'>

In PyTorch v0.3 and 0.4:

Simply list(var.size()), e.g.:

>>> import torch>>> from torch.autograd import Variable>>> from torch import IntTensor>>> var = Variable(IntTensor([[1,0],[0,1]]))>>> varVariable containing: 1  0 0  1[torch.IntTensor of size 2x2]>>> var.size()torch.Size([2, 2])>>> list(var.size())[2, 2]


If you're a fan of NumPyish syntax, then there's tensor.shape.

In [3]: ar = torch.rand(3, 3)In [4]: ar.shapeOut[4]: torch.Size([3, 3])# method-1In [7]: list(ar.shape)Out[7]: [3, 3]# method-2In [8]: [*ar.shape]Out[8]: [3, 3]# method-3In [9]: [*ar.size()]Out[9]: [3, 3]

P.S.: Note that tensor.shape is an alias to tensor.size(), though tensor.shape is an attribute of the tensor in question whereas tensor.size() is a function.


Previous answers got you list of torch.SizeHere is how to get list of ints

listofints = [int(x) for x in tensor.shape]