Función PyTorch torch.movedim


Pytorch torch 参考手册Manual de referencia de Pytorch torch

torch.movedimEs una función de PyTorch utilizada para mover las dimensiones de un tensor. Mueve las dimensiones especificadas a nuevas posiciones y devuelve una nueva vista del tensor.

Esta función es muy útil al ajustar la forma de un tensor para realizar operaciones específicas, por ejemplo, al procesar datos de imagen o preparar entradas para redes neuronales.

Definición de la función

torch.movedim(input, source, destination)

Parámetros:

  • input(Tensor): El tensor de entrada.
  • source(int o tupla de int): Los índices de las dimensiones originales a mover. Puede ser un entero o una tupla de índices de dimensiones.
  • destination(int o tupla de int): Índices de las posiciones de destino. Puede ser un entero o una tupla de índices de dimensiones, cuya longitud debe ser igual a la de source.

Valor de retorno:

  • torch.Tensor: Devuelve una vista del tensor después de mover las dimensiones.

Ejemplos de uso

Ejemplo

import torch

# Crear un tensor con forma (batch, channel, height, width)
x = torch.randn(32, 3, 224, 224)

# Mover la dimensión del canal a la última dimensión
# Mover de la posición 1 a la posición 3
y = torch.movedim(x, 1, 3)

print("Forma original:", x.shape)
print("Forma después de mover:", y.shape)

El resultado de salida es:

原始形状: torch.Size([32, 3, 224, 224])
移动后形状: torch.Size([32, 224, 224, 3])

Ejemplo

import torch

# Crear un tensor con forma (D0, D1, D2, D3)
x = torch.randn(2, 3, 4, 5)

# Mover múltiples dimensiones a la vez
# Mover las dimensiones 0 y 1 a las posiciones de las dimensiones 2 y 3
y = torch.movedim(x, source=(0, 1), destination=(2, 3))

print("Forma original:", x.shape)
print("Forma después de mover:", y.shape)

El resultado de salida es:

原始形状: torch.Size([2, 3, 4, 5])
移动后形状: torch.Size([4, 5, 2, 3])

Ejemplo

import torch

# Convertir un tensor de imagen de (N, C, H, W) a (N, H, W, C)
# Esto es útil al enviar datos a algunas API que requieren que el canal esté en la última posición
images = torch.randn(16, 3, 64, 64)
images_permuted = torch.movedim(images, 1, 3)

print("Forma original (N, C, H, W):", images.shape)
print("Forma convertida (N, H, W, C):", images_permuted.shape)

Nota:torch.movedimSe devuelve una vista, no una copia, por lo que la operación es eficiente. También hay funciones similarestorch.moveaxis, que estorch.movedimfuncionalmente igual, pero con nombres de parámetros diferentes.


Pytorch torch 参考手册Manual de referencia de Pytorch torch

Otras extensiones