タイトルはそれをすべて言います。 _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
これを回避する方法はありますか?
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()
私は道を見つけました。実際、最初に_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
_