如何将Pytorch autograd.Variable转换为Numpy?

Bis*_*tha 15 numpy pytorch tensor

标题说明了一切.我想将a转换PyTorch autograd.Variable为其等效numpy数组.在他们的官方文档中,他们主张使用a.numpy()获取等效numpy数组(for PyTorch tensor).但这给了我以下错误:

回溯(最近一次调用最后一次):文件"stdin",第1行,在模块文件"/home/bishwajit/anaconda3/lib/python3.6/site-packages/torch/autograd/variable.py",第63行,getattr raise AttributeError(name)AttributeError:numpy

有什么办法可以绕过这个吗?

bli*_*345 25

两种可能的情况

  • 使用GPU:如果你试图将cuda float-tensor直接转换为numpy,如下所示,它将引发错误.

    x.data.numpy()

    RuntimeError:不支持FloatTensor的numpy转换

    所以,你不能将cuda float-tensor直接转换为numpy,而是必须首先将它转换为cpu float-tensor,并尝试转换为numpy,如下所示.

    x.data.cpu().numpy的()

  • 使用CPU:转换CPU张量很简单.

    x.data.numpy()


Bis*_*tha 6

我找到了方法。其实,我可以先提取Tensor从数据autograd.Variable使用a.data。然后剩下的部分真的很简单。我只是a.data.numpy()用来获取等效numpy数组。步骤如下:

a = a.data  # a is now torch.Tensor
a = a.numpy()  # a is now numpy array
Run Code Online (Sandbox Code Playgroud)