Python
 Computer >> コンピューター >  >> プログラミング >> Python

NumPyのndarrayとPyTorchのTensorを相互変換する方法をわかりやすく解説

PyTorchのテンソル(Tensor)は、numpy.ndarrayに非常によく似たデータ構造です。両者の大きな違いは、テンソルがGPUを活用して数値計算を高速化できる点にあります。

numpy.ndarrayからPyTorchテンソルへの変換にはtorch.from_numpy()関数を使用し、逆にPyTorchテンソルからnumpy.ndarrayへの変換には.numpy()メソッドを使用します。

変換の手順

  • 必要なライブラリをインポートします。ここではtorchnumpyが必要です。

  • numpy.ndarrayまたはPyTorchテンソルを作成します。

  • torch.from_numpy()関数でnumpy.ndarrayをテンソルに変換するか、.numpy()メソッドでテンソルをnumpy.ndarrayに変換します。

  • 最後に、変換後のテンソルまたはnumpy.ndarrayを出力して確認します。

例1:numpy.ndarrayからPyTorchテンソルへの変換

次のPythonプログラムは、numpy.ndarrayをPyTorchテンソルに変換します。

# ライブラリをインポート
import torch
import numpy as np

# numpy.ndarray「a」を作成
a = np.array([[1,2,3],[2,1,3],[2,3,5],[5,6,4]])
print("a:\n", a)

print("a の型 :\n", type(a))
# numpy.ndarray をテンソルに変換
t = torch.from_numpy(a)
print("t:\n", t)
print("変換後の型:\n", type(t))

出力結果

上記のコードを実行すると、以下の出力が得られます。

a:
[[1 2 3]
[2 1 3]
[2 3 5]
[5 6 4]]
a の型 :
<class 'numpy.ndarray'>
t:
tensor([[1, 2, 3],
        [2, 1, 3],
        [2, 3, 5],
        [5, 6, 4]], dtype=torch.int32)
変換後の型:
<class 'torch.Tensor'>

例2:PyTorchテンソルからnumpy.ndarrayへの変換

次のPythonプログラムは、PyTorchテンソルをnumpy.ndarrayに変換します。

# ライブラリをインポート
import torch
import numpy

# テンソル「t」を作成
t = torch.Tensor([[1,2,3],[2,1,3],[2,3,5],[5,6,4]])
print("t:\n", t)
print("t の型 :\n", type(t))

# テンソルをnumpy.ndarrayに変換
a = t.numpy()
print("a:\n", a)
print("変換後の型:\n", type(a))

出力結果

上記のコードを実行すると、以下の出力が得られます。

t:
tensor([[1., 2., 3.],
        [2., 1., 3.],
        [2., 3., 5.],
        [5., 6., 4.]])
t の型 :
<class 'torch.Tensor'>
a:
[[1. 2. 3.]
[2. 1. 3.]
[2. 3. 5.]
[5. 6. 4.]]
変換後の型:
<class 'numpy.ndarray'>

補足:相互変換時の注意点

torch.from_numpy()で作成されたテンソルは元のNumPy配列とメモリを共有するため、一方を変更すると他方にも影響します。独立したコピーが必要な場合はclone()メソッドを使いましょう。また、GPU上にあるテンソルをNumPy配列に変換する場合は、先に.cpu()メソッドでCPU側に移動させてから.numpy()を呼び出す必要があります。

  1. 画像をPyTorchテンソルに変換する方法【PIL・OpenCV対応の実装例つき】

    PyTorchのテンソル(Tensor)とは、単一のデータ型で構成されたn次元配列(行列)のことです。NumPy配列とよく似ていますが、最大の違いは、テンソルがGPUを活用して数値計算を高速化できるという点にあります。そのため、画像を使った深層学習では、まず画像をテンソル形式へ変換することが一般的な前処理となります。 この記事では、画像をPyTorchテンソルに変換する具体的な手順を、PIL画像を使う例とOpenCV(numpy.ndarray)を使う例の2パターンでわかりやすく解説します。 画像をPyTorchテンソルに変換する手順 必要なライブラリをインポートする:torch、torch

  2. GoogleドキュメントをMicrosoft Word(.docx)に変換する方法【逆パターンも解説】

    Googleドキュメントは、アクセスや共有、文書への署名が手軽に行えることから、多くのユーザーに愛用されているサービスです。しかし、オフラインでの利用や他ツールとの互換性を考えると、DOCXといった定番フォーマットが必要になる場面もあります。Googleドキュメントに保存したファイルのオフラインコピーが必要な場合は、Microsoft Word形式への変換がとても簡単に行えます。本記事ではその逆の手順、つまりWord文書(.docx)をGoogleドキュメント形式に変換して開く方法についても併せてご紹介します。注意:GoogleドキュメントからWordへの変換は可能ですが、変換時に元の書式が完