NumPyのndarrayからPyTorchのTensorへ変換

arr = np.arange(3)とする。

torch.Tensorかtorch.FloatTensor

torch.Tensor(arr)

torch.tensor()

  • 元のdtypeを受け継ぐ。
  • dtypeを指定することもできる。
  • コピーを作る。
torch.tensor(arr)
# or 
torch.tensor(arr, dtype=float32)

torch.from_numpy()

  • 元のdtypeを受け継ぐ。
  • メモリをシェアするので、元のarrayの値を変更するとtensorの値も変わるし逆も成り立つ。
tensor = torch.from_numpy(arr)
print(arr, tensor)
# [0 1 2] tensor([0, 1, 2])

arr[0] = 3
print(arr, tensor)
# [3 1 2] tensor([3, 1, 2])

tensor[1] = 4
print(arr, tensor)
# [3 4 2] tensor([3, 4, 2])

参考資料

https://pytorch.org/docs/stable/tensors.html?highlight=from_numpy

https://pytorch.org/docs/stable/sparse.html?highlight=floattensor#torch.sparse.FloatTensor

https://pytorch.org/docs/stable/torch.html?highlight=from_numpy#torch.from_numpy

stackoverflow.com