web-dev-qa-db-fra.com

Comment convertir Pytorch autograd.Variable en Numpy?

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?

15

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 ()

24
blitu12345

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
4