Función PyTorch torch.moveaxis
Manual de referencia de Pytorch torch
torch.moveaxisEs una función en PyTorch utilizada para mover ejes de tensores. Mueve el eje especificado a una nueva posición y devuelve una nueva vista del tensor.
Esta función estorch.movedimfuncionalmente igual, solo que los nombres de los parámetros difieren (moveaxis usa "axis" mientras que movedim usa "dim").
Definición de la función
torch.moveaxis(input, source, destination)
Parámetros:
input(Tensor): el tensor de entrada.source(int o tupla de ints): los índices de los ejes originales a mover. Puede ser un entero o una tupla de índices de ejes.destination(int o tupla de ints): los índices de las posiciones de destino. Puede ser un entero o una tupla de índices de ejes, y la longitud debe ser la misma que la de source.
Valor de retorno:
torch.Tensor: Devuelve la vista del tensor con los ejes movidos.
Ejemplo de uso
Ejemplo
import torch
# Crear un tensor de forma (batch, seq_len, feature)
x = torch.randn(32, 10, 128)
# Mover la última dimensión a la primera posición
y = torch.moveaxis(x, -1, 0)
print("Forma original:", x.shape)
print("Forma después del movimiento:", y.shape)
# Crear un tensor de forma (batch, seq_len, feature)
x = torch.randn(32, 10, 128)
# Mover la última dimensión a la primera posición
y = torch.moveaxis(x, -1, 0)
print("Forma original:", x.shape)
print("Forma después del movimiento:", y.shape)
El resultado de salida es:
原始形状: torch.Size([32, 10, 128]) 移动后形状: torch.Size([128, 10, 32])
Ejemplo
import torch
# Crear un tensor de cuatro dimensiones (time, channel, height, width)
x = torch.randn(10, 3, 32, 32)
# Mover la dimensión time al final
y = torch.moveaxis(x, 0, -1)
print("Forma original:", x.shape)
print("Forma después del movimiento:", y.shape)
# Crear un tensor de cuatro dimensiones (time, channel, height, width)
x = torch.randn(10, 3, 32, 32)
# Mover la dimensión time al final
y = torch.moveaxis(x, 0, -1)
print("Forma original:", x.shape)
print("Forma después del movimiento:", y.shape)
El resultado de salida es:
原始形状: torch.Size([10, 3, 32, 32]) 移动后形状: torch.Size([3, 32, 32, 10])
Ejemplo
import torch
# Mover varios ejes a la vez
x = torch.randn(2, 3, 4, 5)
# Mover los ejes 0 y 1 juntos a las posiciones de los ejes 2 y 3
y = torch.moveaxis(x, source=(0, 1), destination=(2, 3))
print("Forma original:", x.shape)
print("Forma después del movimiento:", y.shape)
# Mover varios ejes a la vez
x = torch.randn(2, 3, 4, 5)
# Mover los ejes 0 y 1 juntos a las posiciones de los ejes 2 y 3
y = torch.moveaxis(x, source=(0, 1), destination=(2, 3))
print("Forma original:", x.shape)
print("Forma después del movimiento:", y.shape)
El resultado de salida es:
原始形状: torch.Size([2, 3, 4, 5]) 移动后形状: torch.Size([4, 5, 2, 3])
Nota:torch.moveaxisDevuelve una vista, no una copia, por lo que la operación es eficiente. Esta función se utiliza a menudo para ajustar la forma de los datos y adaptarse a diferentes marcos de aprendizaje profundo o APIs.
Otras extensiones