En numpy, V.shape
Donne un tuple de pouces de dimensions de V.
En tensorflow V.get_shape().as_list()
donne une liste d'entiers des dimensions de V.
Dans pytorch, V.size()
donne un objet de taille, mais comment puis-je le convertir en ints?
Pour PyTorch v1.0 et éventuellement supérieur:
>>> 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'>
Vous pouvez convertir n'importe quel objet torch.Size en une liste native Python list:
>>> list(var.size())
[2, 2]
>>> type(list(var.size()))
<class 'list'>
Dans PyTorch v0.3 et 0.4:
Simplement list(var.size())
, par exemple:
>>> 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]
Si vous êtes fan de la syntaxe NumPy
ish, alors il y a 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]
PS: Notez que tensor.shape
Est un alias de tensor.size()
, bien que tensor.shape
Soit un attribut du tenseur en question alors que tensor.size()
est une fonction.