Le titre dit tout. Je veux convertir un PyTorch autograd.Variable
En son tableau numpy
équivalent. Dans leur documentation officielle , ils ont préconisé d'utiliser a.numpy()
pour obtenir l'équivalent numpy
tableau (pour PyTorch tensor
). Mais cela me donne l'erreur suivante:
Traceback (dernier appel en date): Fichier "stdin", ligne 1, dans le module Fichier "/home/bishwajit/anaconda3/lib/python3.6/site-packages/torch/autograd/variable.py", ligne 63, dans getattr augmenter AttributeError (nom) AttributeError: numpy
Existe-t-il un moyen de contourner cela?
Deux cas possibles
tilisation du GPU: Si vous essayez de convertir un tenseur flottant cuda directement en numpy comme indiqué ci-dessous, il générera une erreur.
x.data.numpy ()
RuntimeError: la conversion numpy pour FloatTensor n'est pas prise en charge
Donc, vous ne pouvez pas convertir un tenseur flottant cuda directement en numpy, à la place, vous devez d'abord le convertir en tenseur flottant cpu, et essayer de le convertir en numpy, comme indiqué ci-dessous.
x.data.cpu (). numpy ()
tilisation du CPU: La conversion d'un tenseur de CPU est simple.
x.data.numpy ()
J'ai trouvé le chemin. En fait, je peux d'abord extraire les données Tensor
du autograd.Variable
En utilisant a.data
. Ensuite, la partie restante est vraiment simple. J'utilise simplement a.data.numpy()
pour obtenir l'équivalent numpy
tableau. Voici les étapes:
a = a.data # a is now torch.Tensor
a = a.numpy() # a is now numpy array