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

PyTorchのテンソルで要素ごとの減算(引き算)を行う方法を徹底解説

PyTorchのテンソルに対して要素ごとの減算を行うには、torch.sub() メソッドを使用します。このメソッドは、テンソルの対応する要素同士を減算します。テンソルからスカラーを引くことも、テンソルから別のテンソルを引くことも可能です。また、減算する2つのテンソルは、次元が同じでも異なっていても構いません。結果として得られるテンソルの次元は、より高次元のテンソルと同じになります。

実行手順

  • 必要なライブラリをインポートします。以降のすべてのPythonサンプルでは torch ライブラリを使用するため、事前にインストールしておいてください。

  • 2つ以上のPyTorchテンソルを定義し、内容を出力して確認します。スカラー値を減算したい場合は、その値も定義しておきます。

  • torch.sub() を使って、テンソルからスカラーまたは別のテンソルを減算し、結果を新しい変数に代入します。このメソッドによる減算では、元のテンソルの内容は一切変更されません(非破壊的操作)。

  • 計算結果のテンソルを出力します。

例1:テンソルからスカラーを減算する

ここでは、テンソルからスカラー値を引くPython 3のプログラムを紹介します。同じ処理を3つの異なる方法で実装しています。

# Python program to perform element-wise subtraction
# import the required library
import torch

# Create a tensor
t = torch.Tensor([1.5, 2.03, 3.8, 2.9])
print("Original Tensor t:\n", t)

# Subtract a scalar value to a tensor
v = torch.sub(t, 5.60)
print("Element-wise subtraction result:\n", v)

# Same result can also be obtained as below
t1 = torch.Tensor([5.60])
w = torch.sub(t, t1)
print("Element-wise subtraction result:\n", w)

# Other way to do above operation
t2 = torch.Tensor([5.60,5.60,5.60,5.60])
x = torch.sub(t, t2)
print("Element-wise subtraction result:\n", x)

出力結果

Original Tensor t:
    tensor([1.5000, 2.0300, 3.8000, 2.9000])
Element-wise subtraction result:
    tensor([-4.1000, -3.5700, -1.8000, -2.7000])
Element-wise subtraction result:
    tensor([-4.1000, -3.5700, -1.8000, -2.7000])
Element-wise subtraction result:
    tensor([-4.1000, -3.5700, -1.8000, -2.7000])

スカラー値を直接指定する方法、単一要素のテンソルを使う方法、同じ値を持つテンソルを使う方法のいずれでも、同じ結果が得られることがわかります。

例2:2次元テンソルから1次元テンソルを減算する

次のプログラムは、2次元(2D)テンソルから1次元(1D)テンソルを引く方法を示しています。

# Import necessary library
import torch

# Create a 2D tensor
T1 = torch.Tensor([[8,7],[4,5]])

# Create a 1-D tensor
T2 = torch.Tensor([10, 5])
print("T1:\n", T1)
print("T2:\n", T2)

# Subtract 1-D tensor from 2-D tensor
v = torch.sub(T1, T2)
print("Element-wise subtraction result:\n", v)

出力結果

T1:
tensor([[8., 7.],
        [4., 5.]])
T2:
    tensor([10., 5.])
Element-wise subtraction result:
tensor([[-2., 2.],
        [-6., 0.]])

1Dテンソルの各要素が、2Dテンソルの対応する列(行方向)にブロードキャストされて減算されていることが確認できます。

例3:1次元テンソルから2次元テンソルを減算する

次のプログラムは、1Dテンソルから2Dテンソルを引く方法を示しています。

# Python program to subtract 2D tensor from 1D tensor
# Import the library
import torch

# Create a 2D tensor
T1 = torch.Tensor([[1,2],[4,5]])

# Create a 1-D tensor
T2 = torch.Tensor([10, 5])
print("T1:\n", T1)
print("T2:\n", T2)

# Subtract 2-D tensor from 1-D tensor
v = torch.sub(T2, T1)
print("Element-wise subtraction result:\n", v)

出力結果

T1:
tensor([[1., 2.],
        [4., 5.]])
T2:
    tensor([10., 5.])
Element-wise subtraction result:
tensor([[9., 3.],
        [6., 0.]])

注目すべき点として、減算の順序を入れ替えても、結果のテンソルは2Dテンソルになります。つまり、最終的な出力の次元は、より高次元のテンソルに合わせられるのです。

例4:2次元テンソル同士の減算

次のプログラムは、2Dテンソルから別の2Dテンソルを引く方法を示しています。

# import the library
import torch

# Create two 2-D tensors
T1 = torch.Tensor([[8,7],[3,4]])
T2 = torch.Tensor([[0,3],[4,9]])
print("T1:\n", T1)
print("T2:\n", T2)

# Subtract above two 2-D tensors
v = torch.sub(T1,T2)
print("Element-wise subtraction result:\n", v)

出力結果

T1:
tensor([[8., 7.],
        [3., 4.]])
T2:
tensor([[0., 3.],
        [4., 9.]])
Element-wise subtraction result:
tensor([[ 8., 4.],
        [-1., -5.]])

このように、torch.sub() を使えば、スカラー・1Dテンソル・2Dテンソルの任意の組み合わせで要素ごとの減算を簡単に実行できます。ブロードキャストの仕組みを理解しておくと、次元の異なるテンソル間の演算も自在に扱えるようになります。


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

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

  2. Excelで減算(引き算)を行う方法|数式の基本から応用まで徹底解説

    Microsoft Excelは、パソコン向けに提供されている表計算ソフトの中でも最高峰と評価されるプログラムです。Excelは、一般的な表計算ソフトが備えるすべての機能を持ちながら、それらをより高い精度と効率で実行できる点が最大の魅力です。表計算ソフトは本来、記録の管理や計算作業をユーザーにとって簡単にすることを目的として設計されているため、減算をはじめとするさまざまな数学的処理を自動でこなせるのは当然と言えるでしょう。ただし、コンピューターは自ら考え行動する存在ではないため、減算を実行してほしい場面では、ユーザー側からその指示を出す必要があります。Excelに特定の計算を実行させるには、「