Función PyTorch torch.vmap
Manual de referencia de Pytorch torch
torch.vmapes una función en PyTorch para el mapeo de vectores. Acepta una función como entrada y devuelve una nueva función que puede operar automáticamente sobre tensores por lotes, similar a vmap en JAX.
Definición de la función
torch.vmap(func, in_dims, out_dims, randomness)
Descripción de parámetros
func: la función a vectorizarin_dims: la dimensión de lote del tensor de entrada (opcional)out_dims: la dimensión de lote del tensor de salida (opcional)randomness: comportamiento aleatorio, opciones "error", "different", "same"
Ejemplo de uso
Ejemplo
import torch
# Definir una función simple
def simple_func(x):
return x * 2 + 1
# Usar vmap para vectorizar la función
vectorized_func = torch.vmap(simple_func)
# Entrada por lotes (dimensión de lote 0)
batch_input = torch.randn(4, 3)
# Aplicar la función vectorizada
output = vectorized_func(batch_input)
print("Forma de entrada:", batch_input.shape)
print("Forma de salida:", output.shape)
print("Salida:")
print(output)
# Definir una función simple
def simple_func(x):
return x * 2 + 1
# Usar vmap para vectorizar la función
vectorized_func = torch.vmap(simple_func)
# Entrada por lotes (dimensión de lote 0)
batch_input = torch.randn(4, 3)
# Aplicar la función vectorizada
output = vectorized_func(batch_input)
print("Forma de entrada:", batch_input.shape)
print("Forma de salida:", output.shape)
print("Salida:")
print(output)
El resultado de salida es:
输入形状: torch.Size([4, 3])
输出形状: torch.Size([4, 3])
输出:
tensor([[ 0.2345, 1.5678, -0.3456],
[ 2.1234, -1.2345, 0.5678],
[-0.8765, 1.2345, 2.3456],
[ 1.5678, 0.1234, -1.2345]])
Otras extensiones