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

后端 未结 3 1048
囚心锁ツ
囚心锁ツ 2021-02-01 13:51

In numpy, V.shape gives a tuple of ints of dimensions of V.

In tensorflow V.get_shape().as_list() gives a list of integers of the dimensions of

相关标签:
3条回答
  • 2021-02-01 14:20

    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.shape
    torch.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]]))
    
    >>> var
    Variable containing:
     1  0
     0  1
    [torch.IntTensor of size 2x2]
    
    >>> var.size()
    torch.Size([2, 2])
    
    >>> list(var.size())
    [2, 2]
    
    0 讨论(0)
  • 2021-02-01 14:25

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

    listofints = [int(x) for x in tensor.shape]
    
    0 讨论(0)
  • 2021-02-01 14:39

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

    In [3]: ar = torch.rand(3, 3)
    
    In [4]: ar.shape
    Out[4]: torch.Size([3, 3])
    
    # method-1
    In [7]: list(ar.shape)
    Out[7]: [3, 3]
    
    # method-2
    In [8]: [*ar.shape]
    Out[8]: [3, 3]
    
    # method-3
    In [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.

    0 讨论(0)
提交回复
热议问题