PyTorch torch.addr 関数
torch.addrは、2つのベクトルの外積を計算し、それを入力行列に加算するためのPyTorchの関数です。vec1の各行とvec2の各列の外積を計算し、それをinputに加算します。
関数定義
torch.addr(input, vec1, vec2, *, beta=1.0, alpha=1.0, out=None)
パラメータ:
input(Tensor): 入力行列。結果に加算されます。vec1(Tensor): 1つ目のベクトル。形状は (n,) または (n, 1) です。vec2(Tensor): 2つ目のベクトル。形状は (m,) または (m, 1) です。beta(float, オプション): input に掛ける係数。デフォルトは 1.0。alpha(float, オプション): 外積結果に掛ける係数。デフォルトは 1.0。out(Tensor, オプション): 出力テンソル。
戻り値:
torch.Tensor: 外積と入力行列の和を返します。形状は (n, m) です。
使用例
例
import torch
# 入力行列と2つのベクトルを作成
input = torch.zeros(3, 4)
vec1 = torch.tensor([1, 2, 3])
vec2 = torch.tensor([4, 5, 6, 7])
# 外積を計算して入力行列に加算
result = torch.addr(input, vec1, vec2)
print("入力行列の形状:", input.shape)
print("ベクトル1:", vec1)
print("ベクトル2:", vec2)
print("結果の形状:", result.shape)
print(result)
# 入力行列と2つのベクトルを作成
input = torch.zeros(3, 4)
vec1 = torch.tensor([1, 2, 3])
vec2 = torch.tensor([4, 5, 6, 7])
# 外積を計算して入力行列に加算
result = torch.addr(input, vec1, vec2)
print("入力行列の形状:", input.shape)
print("ベクトル1:", vec1)
print("ベクトル2:", vec2)
print("結果の形状:", result.shape)
print(result)
出力結果は次のとおりです:
输入矩阵形状: torch.Size([3, 4])
向量1: tensor([1, 2, 3])
向量2: tensor([4, 5, 6, 7])
结果形状: torch.Size([3, 4])
tensor([[ 4., 5., 6., 7.],
[ 8., 10., 12., 14.],
[12., 15., 18., 21.]])
例 - 入力行列を使用しない
import torch
vec1 = torch.tensor([1, 2, 3])
vec2 = torch.tensor([4, 5, 6])
# 外積を直接計算
result = torch.addr(torch.zeros(3, 3), vec1, vec2)
print(result)
vec1 = torch.tensor([1, 2, 3])
vec2 = torch.tensor([4, 5, 6])
# 外積を直接計算
result = torch.addr(torch.zeros(3, 3), vec1, vec2)
print(result)
その他の拡張機能
Pytorch torch リファレンスマニュアル