PyTorch torch.movedim-Funktion
PyTorch torch Referenzhandbuch
torch.movedimEs ist eine Funktion in PyTorch zum Verschieben von Tensor-Dimensionen. Sie verschiebt die angegebenen Dimensionen an neue Positionen und gibt eine neue Tensor-Ansicht zurück.
Diese Funktion ist sehr nützlich, wenn die Form eines Tensors für bestimmte Operationen angepasst werden soll, z. B. bei der Verarbeitung von Bilddaten oder der Vorbereitung von Eingaben für neuronale Netze.
Funktionsdefinition
torch.movedim(input, source, destination)
Parameters:
input(Tensor): Der Eingabe-Tensor.source(int oder Tupel von int): Die ursprünglichen Dimensionsindizes, die verschoben werden sollen. Kann eine Ganzzahl oder ein Tupel von Dimensionsindizes sein.destination(int oder Tupel von int): Die Zielpositionsindizes. Kann eine Ganzzahl oder ein Tupel von Dimensionsindizes sein, mit derselben Länge wie source.
Rückgabewert:
torch.Tensor: Gibt die Tensor-Ansicht zurück, nachdem die Dimensionen verschoben wurden.
Anwendungsbeispiele
Beispiel
# Erstelle einen Tensor mit der Form (batch, channel, height, width)
x = torch.randn(32, 3, 224, 224)
# Verschiebe die Channel-Dimension an die letzte Dimension
# Verschiebe von Position 1 nach Position 3
y = torch.movedim(x, 1, 3)
print("Ursprüngliche Form:", x.shape)
print("Form nach dem Verschieben:", y.shape)
Das Ausgabeergebnis ist:
原始形状: torch.Size([32, 3, 224, 224]) 移动后形状: torch.Size([32, 224, 224, 3])
Beispiel
# Erstelle einen Tensor mit der Form (D0, D1, D2, D3)
x = torch.randn(2, 3, 4, 5)
# Mehrere Dimensionen auf einmal verschieben
# Verschiebe die Dimensionen 0 und 1 an die Positionen 2 und 3
y = torch.movedim(x, source=(0, 1), destination=(2, 3))
print("Ursprüngliche Form:", x.shape)
print("Form nach dem Verschieben:", y.shape)
Das Ausgabeergebnis ist:
原始形状: torch.Size([2, 3, 4, 5]) 移动后形状: torch.Size([4, 5, 2, 3])
Beispiel
# Konvertiere einen Bildtensor von (N, C, H, W) nach (N, H, W, C)
# Dies ist nützlich, wenn Daten an APIs gesendet werden, die den Kanal an der letzten Position erfordern
images = torch.randn(16, 3, 64, 64)
images_permuted = torch.movedim(images, 1, 3)
print("Ursprüngliche Form (N, C, H, W):", images.shape)
print("Konvertierte Form (N, H, W, C):", images_permuted.shape)
Hinweis:torch.movedimWas zurückgegeben wird, ist eine Ansicht, keine Kopie, daher ist die Operation effizient. Es gibt auch eine ähnliche Funktiontorch.moveaxis, welchetorch.movedimhat dieselbe Funktionalität, aber die Parameternamen unterscheiden sich.
Andere Erweiterungen