Función PyTorch torch.addr
Manual de referencia de Pytorch torch
torch.addrEs una función en PyTorch que se utiliza para calcular el producto exterior de dos vectores y agregarlo a la matriz de entrada. Calcula el producto exterior de cada fila de vec1 con cada columna de vec2 y luego lo agrega a input.
Definición de la función
torch.addr(input, vec1, vec2, *, beta=1.0, alpha=1.0, out=None)
Parámetros:
input(Tensor): la matriz de entrada, que se agrega al resultado.vec1(Tensor): el primer vector, con forma (n,) o (n, 1).vec2(Tensor): el segundo vector, con forma (m,) o (m, 1).beta(float, opcional): coeficiente que multiplica a input, por defecto 1.0.alpha(float, opcional): coeficiente que multiplica el resultado del producto exterior, por defecto 1.0.out(Tensor, opcional): tensor de salida.
Valor de retorno:
torch.Tensor: Devuelve la suma del producto exterior y la matriz de entrada, con forma (n, m).
Ejemplo de uso
Ejemplo
import torch
# Crear la matriz de entrada y dos vectores
input = torch.zeros(3, 4)
vec1 = torch.tensor([1, 2, 3])
vec2 = torch.tensor([4, 5, 6, 7])
# Calcular el producto exterior y agregarlo a la matriz de entrada
result = torch.addr(input, vec1, vec2)
print("Forma de la matriz de entrada:", input.shape)
print("Vector 1:", vec1)
print("Vector 2:", vec2)
print("Forma del resultado:", result.shape)
print(result)
# Crear la matriz de entrada y dos vectores
input = torch.zeros(3, 4)
vec1 = torch.tensor([1, 2, 3])
vec2 = torch.tensor([4, 5, 6, 7])
# Calcular el producto exterior y agregarlo a la matriz de entrada
result = torch.addr(input, vec1, vec2)
print("Forma de la matriz de entrada:", input.shape)
print("Vector 1:", vec1)
print("Vector 2:", vec2)
print("Forma del resultado:", result.shape)
print(result)
El resultado es:
输入矩阵形状: 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.]])
Ejemplo - sin usar matriz de entrada
import torch
vec1 = torch.tensor([1, 2, 3])
vec2 = torch.tensor([4, 5, 6])
# Calcular directamente el producto exterior
result = torch.addr(torch.zeros(3, 3), vec1, vec2)
print(result)
vec1 = torch.tensor([1, 2, 3])
vec2 = torch.tensor([4, 5, 6])
# Calcular directamente el producto exterior
result = torch.addr(torch.zeros(3, 3), vec1, vec2)
print(result)
Otras extensiones