Fonction torch.movedim de PyTorch


Pytorch torch 参考手册Manuel de référence Pytorch torch

torch.movedimIl s'agit d'une fonction de PyTorch permettant de déplacer les dimensions d'un tenseur. Elle déplace les dimensions spécifiées vers de nouvelles positions et renvoie une nouvelle vue du tenseur.

Cette fonction est très utile pour ajuster la forme d'un tenseur pour des opérations spécifiques, comme lors du traitement de données d'image ou de la préparation des entrées d'un réseau de neurones.

Définition de fonction

torch.movedim(input, source, destination)

Parameters:

  • input(Tensor) : Le tenseur d'entrée.
  • source(int ou tuple d'int) : Les indices de dimension d'origine à déplacer. Peut être un entier ou un tuple d'indices de dimension.
  • destination(int ou tuple d'int) : Les indices de position cible. Peut être un entier ou un tuple d'indices de dimension, de même longueur que source.

Valeur de retour:

  • torch.Tensor: Renvoie la vue du tenseur après le déplacement des dimensions.

Exemples d'utilisation

Exemple

import torch

# Créer un tenseur de forme (batch, channel, height, width)
x = torch.randn(32, 3, 224, 224)

# Déplacer la dimension channel vers la dernière dimension
# Déplacer de la position 1 vers la position 3
y = torch.movedim(x, 1, 3)

print("Forme d'origine :", x.shape)
print("Forme après déplacement :", y.shape)

Le résultat de sortie est:

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

Exemple

import torch

# Créer un tenseur de forme (D0, D1, D2, D3)
x = torch.randn(2, 3, 4, 5)

# Déplacer plusieurs dimensions en une seule fois
# Déplacer les dimensions 0 et 1 vers les positions 2 et 3
y = torch.movedim(x, source=(0, 1), destination=(2, 3))

print("Forme d'origine :", x.shape)
print("Forme après déplacement :", y.shape)

Le résultat de sortie est:

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

Exemple

import torch

# Convertir un tenseur d'image de (N, C, H, W) en (N, H, W, C)
# Ceci est utile lorsqu'on envoie des données à des API qui nécessitent le canal en dernière position
images = torch.randn(16, 3, 64, 64)
images_permuted = torch.movedim(images, 1, 3)

print("Forme originale (N, C, H, W) :", images.shape)
print("Forme convertie (N, H, W, C) :", images_permuted.shape)

Remarque :torch.movedimCe qui est retourné est une vue, et non une copie, donc l'opération est efficace. Il existe également une fonction similairetorch.moveaxis, quitorch.movedima la même fonctionnalité, mais les noms des paramètres sont différents.


Pytorch torch 参考手册Manuel de référence Pytorch torch

Autres extensions