【PyTorch】Tensorの基本的な算術演算、行列演算について



1. 基本的な算術演算
PyTorchでは、テンソルに対してさまざまな基本的な算術演算を非常に簡単に行うことができます。ここでは、加算、減算、乗算、除算といった基本的な演算について具体例を使って説明していきます。
1.1. 加算
まず、テンソル同士の加算の方法について見ていきましょう。PyTorchでは、+ 演算子を直接使って加算できますし、torch.add() メソッドを使っても同様の結果が得られます。
import torch
a = torch.tensor([1, 2, 3])
b = torch.tensor([4, 5, 6])
# 加算
add = a + b
print(add)
# または
add = torch.add(a, b)
print(add)
1.2. 減算
次に、テンソル同士の減算について説明します。加算と同様、- 演算子を直接使うか、torch.sub()メソッドを使うことで実現できます。
# 減算
sub = a - b
print(sub)
# または
sub = torch.sub(a, b)
print(sub)
1.3. 乗算(要素ごと)
次に、要素ごとの乗算についてです。これは、各要素を同じ位置の要素と掛け合わせる演算です。
# 乗算(要素ごと)
mul = a * b
print(mul)
# または
mul = torch.mul(a, b)
print(mul)
乗算の場合も
*
演算子と torch.mul()
のどちらでも良いです。
1.4. 除算(要素ごと)
最後に、要素ごとの除算について見ていきます。各要素を同じ位置の要素で割ります。
# 除算(要素ごと)
div = a / b
# または
div = torch.div(a, b)
print(div) # 出力: tensor([0.2500, 0.4000, 0.5000])
1.5. メソッドと演算子の比較
ここでは、torch.add(), torch.sub(), torch.mul(), torch.div()というメソッドを使っていますが、直接 +, -, *, / を使っても同じ計算が可能です。
2. 行列演算
行列を使った演算もPyTorchでは非常に簡単に行うことができます。行列積、転置、逆行列など、基本的な行列操作の例を以下に示します。


2.1. 行列積
PyTorchでは torch.matmul()を使って行列積を計算することができます。また、@ 演算子を使うことでも同じ演算が行えます。
matrix_a = torch.tensor([[1, 2], [3, 4]])
matrix_b = torch.tensor([[5, 6], [7, 8]])
# 行列積
matmul = torch.matmul(matrix_a, matrix_b)
print(matmul)
# または
matmul = matrix_a @ matrix_b
print(matmul)
2.2. 転置
次に、行列の転置について説明します。転置は t() メソッドを使って簡単に実行できます。
print(matrix_a)
# 転置
transpose = matrix_a.t()
print(transpose)
転置は行と列を入れ替える操作です。
t()
メソッドを使うことで、行列の形を簡単に変えることができます。
2.3. 逆行列
次に、行列の逆行列の求め方について説明します。逆行列を求めるには torch.inverse()メソッドを使用しますが、整数型のテンソルでは計算できないため、浮動小数点型に変換する必要があります。
# 行列の逆行列
inverse = torch.inverse(matrix_a.float()) # int型テンソルは扱えないため、float型に変換
print(inverse)
2.4. メソッドと演算子の比較
行列積は torch.matmul() または @ 演算子で簡単に計算できます。また、t() メソッドで行列を転置し、torch.inverse() で逆行列を求めることができます。