Python - よく使うモジュール - numpy 数値計算 - tensor 変換
- 1. 概要
- 2. 変換
1. 概要
「ndarray」は、「pytorch.tensor」と相互変換ができます。
本ページは、下記のサイトを参考にさせていただきました。
「Pytorch tensor と numpy ndarray の変換」
2. 変換
「ndarray」から「pytorch.tensor」へは、「torch.from_numpy」というメソッドを使用します。
「pytorch.tensor」から「ndarray」へは、「to('cpu').detach().numpy().copy()」というメソッドを使用します。
import torch
import numpy as np
x = np.zeros((2, 3))
print(x)
y = torch.from_numpy(x.astype(np.float32)).clone()
print(y)
z = y.to('cpu').detach().numpy().copy()
print(z)
というコードを実行すると、下記の結果が得られます。
[[0. 0. 0.]
[0. 0. 0.]]
tensor([[0., 0., 0.],
[0., 0., 0.]])
[[0. 0. 0.]
[0. 0. 0.]]
参考サイトによれば。
pytorchでは変数の型としてほとんどtorch.floatを使うので、基本的にはnumpyでnp.float32にキャストしてからtorch tensorへ変換する。また、torch tensor と numpy ndarray はメモリを共有しているようなので、clone()やcopy()を書いておくと書き換えの心配がなくなる。
とのことです。
|
|