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()を書いておくと書き換えの心配がなくなる。
 とのことです。