Fonction torch.moveaxis de PyTorch
Manuel de référence Pytorch torch
torch.moveaxisest une fonction de PyTorch utilisée pour déplacer les axes d'un tenseur. Elle déplace les axes spécifiés vers de nouvelles positions et renvoie une nouvelle vue du tenseur.
Cette fonction est identique àtorch.movedimIl a la même fonctionnalité, sauf que les noms des paramètres diffèrent (moveaxis utilise "axis" alors que movedim utilise "dim").
Définition de fonction
torch.moveaxis(input, source, destination)
Parameters:
input(Tensor) : Le tenseur d'entrée.source(int ou tuple d'int) : Les indices d'axe d'origine à déplacer. Peut être un entier ou un tuple d'indices d'axe.destination(int ou tuple d'int) : Les indices de position cible. Peut être un entier ou un tuple d'indices d'axe, et sa longueur doit être identique à celle de source.
Valeur de retour:
torch.Tensor: Renvoie la vue du tenseur après déplacement des axes.
Exemples d'utilisation
Exemple
import torch
# Créer un tenseur de forme (batch, seq_len, feature)
x = torch.randn(32, 10, 128)
# Déplacer la dernière dimension à la première position
y = torch.moveaxis(x, -1, 0)
print("Forme d'origine :", x.shape)
print("Forme après déplacement :", y.shape)
# Créer un tenseur de forme (batch, seq_len, feature)
x = torch.randn(32, 10, 128)
# Déplacer la dernière dimension à la première position
y = torch.moveaxis(x, -1, 0)
print("Forme d'origine :", x.shape)
print("Forme après déplacement :", y.shape)
Le résultat de sortie est:
原始形状: torch.Size([32, 10, 128]) 移动后形状: torch.Size([128, 10, 32])
Exemple
import torch
# Créer un tenseur à quatre dimensions (temps, canal, hauteur, largeur)
x = torch.randn(10, 3, 32, 32)
# Déplacer la dimension temporelle à la fin
y = torch.moveaxis(x, 0, -1)
print("Forme d'origine :", x.shape)
print("Forme après déplacement :", y.shape)
# Créer un tenseur à quatre dimensions (temps, canal, hauteur, largeur)
x = torch.randn(10, 3, 32, 32)
# Déplacer la dimension temporelle à la fin
y = torch.moveaxis(x, 0, -1)
print("Forme d'origine :", x.shape)
print("Forme après déplacement :", y.shape)
Le résultat de sortie est:
原始形状: torch.Size([10, 3, 32, 32]) 移动后形状: torch.Size([3, 32, 32, 10])
Exemple
import torch
# Déplacer plusieurs axes à la fois
x = torch.randn(2, 3, 4, 5)
# Déplacer les axes 0 et 1 vers les positions 2 et 3 ensemble
y = torch.moveaxis(x, source=(0, 1), destination=(2, 3))
print("Forme d'origine :", x.shape)
print("Forme après déplacement :", y.shape)
# Déplacer plusieurs axes à la fois
x = torch.randn(2, 3, 4, 5)
# Déplacer les axes 0 et 1 vers les positions 2 et 3 ensemble
y = torch.moveaxis(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])
Remarque :torch.moveaxisIl renvoie une vue, pas une copie, donc l'opération est efficace. Cette fonction est souvent utilisée pour ajuster les formes de données afin de les adapter à différents frameworks d'apprentissage profond ou API.
Autres extensions