2017-06-03 5 views
4

タイトルはそれをすべて言っています。私はPyTorch autograd.Variableをその同等のnumpy配列に変換したいと思います。彼らのofficial documentationでは、彼らはnumpy配列(PyTorch tensor)を得るためにa.numpy()を使用することを提唱しました。しかし、これは私に次のエラーを与えます:Pytorch autograd.VariableをNumpyに変換する方法ですか?

Traceback (most recent call last): File "stdin", line 1, in module File "/home/bishwajit/anaconda3/lib/python3.6/site-packages/torch/autograd/variable.py", line 63, in getattr raise AttributeError(name) AttributeError: numpy

私はこれを回避する方法はありますか?

答えて

11

二つの可能なケースGPU使用

  • をあなたは、以下に示すようにnumpyのために直接CUDAフロート-テンソルを変換しようとした場合、それはエラーがスローされます。だから、

    x.data.numpy()

    RuntimeError: numpy conversion for FloatTensor is not supported

    、あなたは、以下に示すように、第1のCPUフロート-テンソルに変換し、numpyのに変換しようとしなければならない代わりに、numpyの直接をCUDAフロート-テンソルをひそか傾けます。 CPUを使用して

    x.data.cpu().numpy()

  • CPUテンソルの変換は単純です。

    x.data.numpy()

+0

はい、私はそれをしました。私は自分の質問に答えました。しかし、それは何とか消えてしまった。 –

+1

多くの人がこの問題に直面しているように、私はこれを特に言及すると考えました。 – blitu12345

1

私は方法を見つけました。実際にはautograd.VariableからTensorのデータをa.dataで抽出することができます。その後、残りの部分は本当にシンプルです。私はちょうどnumpy配列を得るためにa.data.numpy()を使用します。ここでの手順です:

a = a.data # a is now torch.Tensor 
a = a.numpy() # a is now numpy array 
関連する問題