web-dev-qa-db-ja.com

Pytorch autograd.VariableをNumpyに変換するには?

タイトルはそれをすべて言います。 _PyTorch autograd.Variable_を同等のnumpy配列に変換したい。 公式ドキュメント では、a.numpy()を使用して同等のnumpy配列を取得することを推奨しました(_PyTorch tensor_の場合)。しかし、これは私に次のエラーを与えます:

トレースバック(最新の最後の呼び出し):ファイル「stdin」、行1、モジュールファイル「/home/bishwajit/anaconda3/lib/python3.6/site-packages/torch/autograd/variable.py」、行63、 getattrraise AttributeError(name)AttributeError:numpy

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

15

2つの可能なケース

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

24
blitu12345

私は道を見つけました。実際、最初に_autograd.Variable_を使用して_a.data_からTensorデータを抽出できます。その後、残りの部分は本当に簡単です。 a.data.numpy()を使用して、同等のnumpy配列を取得します。手順は次のとおりです。

_a = a.data  # a is now torch.Tensor
a = a.numpy()  # a is now numpy array
_