Функция PyTorch torch.addr
Справочное руководство PyTorch torch
torch.addrЭто функция в PyTorch, используемая для вычисления внешнего произведения двух векторов и добавления его к входной матрице. Она вычисляет внешнее произведение каждой строки vec1 и каждого столбца vec2, затем добавляет его к input.
Определение функции
torch.addr(input, vec1, vec2, *, beta=1.0, alpha=1.0, out=None)
Parameters:
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)
Другие расширения