PyTorch torch.addr 函数
torch.addr 是 PyTorch 中用于计算两个向量的外积并将其添加到输入矩阵的函数。它计算 vec1 的每一行与 vec2 的每一列的外积,然后添加到 input 中。
函数定义
torch.addr(input, vec1, vec2, *, beta=1.0, alpha=1.0, out=None)
参数:
input(Tensor): 输入矩阵,被添加到结果中。vec1(Tensor): 第一个向量,形状为 (n,) 或 (n, 1)。vec2(Tensor): 第二个向量,形状为 (m,) 或 (m, 1)。beta(float, 可选): 乘以 input 的系数,默认为 1.0。alpha(float, 可选): 乘以外积结果的系数,默认为 1.0。out(Tensor, 可选): 输出张量。
返回值:
torch.Tensor: 返回外积与输入矩阵之和,形状为 (n, m)。
使用示例
实例
import torch
# 创建输入矩阵和两个向量
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)
# 创建输入矩阵和两个向量
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 参考手册