PyTorch torch.moveaxis-Funktion
PyTorch torch Referenzhandbuch
torch.moveaxisist eine Funktion in PyTorch, die verwendet wird, um Tensorachsen zu verschieben. Sie verschiebt die angegebenen Achsen an neue Positionen und gibt eine neue Tensoransicht zurück.
Diese Funktion ist dieselbe wietorch.movedimEs hat die gleiche Funktionalität, außer dass die Parameternamen abweichen (moveaxis verwendet "axis", während movedim "dim" verwendet).
Funktionsdefinition
torch.moveaxis(input, source, destination)
Parameters:
input(Tensor): Der Eingabe-Tensor.source(int oder Tupel von int): Die ursprünglichen Achsenindizes, die verschoben werden sollen. Kann eine Ganzzahl oder ein Tupel von Achsenindizes sein.destination(int oder Tupel von int): Die Zielpositionsindizes. Kann eine Ganzzahl oder ein Tupel von Achsenindizes sein, und ihre Länge muss mit source übereinstimmen.
Rückgabewert:
torch.Tensor: Gibt die Tensoransicht nach dem Verschieben der Achsen zurück.
Anwendungsbeispiele
Beispiel
import torch
# Erstellt einen Tensor mit der Form (batch, seq_len, feature)
x = torch.randn(32, 10, 128)
# Verschiebe die letzte Dimension an die erste Position
y = torch.moveaxis(x, -1, 0)
print("Ursprüngliche Form:", x.shape)
print("Form nach dem Verschieben:", y.shape)
# Erstellt einen Tensor mit der Form (batch, seq_len, feature)
x = torch.randn(32, 10, 128)
# Verschiebe die letzte Dimension an die erste Position
y = torch.moveaxis(x, -1, 0)
print("Ursprüngliche Form:", x.shape)
print("Form nach dem Verschieben:", y.shape)
Das Ausgabeergebnis ist:
原始形状: torch.Size([32, 10, 128]) 移动后形状: torch.Size([128, 10, 32])
Beispiel
import torch
# Erstellt einen vierdimensionalen Tensor (time, channel, height, width)
x = torch.randn(10, 3, 32, 32)
# Verschiebe die Zeitdimension an das Ende
y = torch.moveaxis(x, 0, -1)
print("Ursprüngliche Form:", x.shape)
print("Form nach dem Verschieben:", y.shape)
# Erstellt einen vierdimensionalen Tensor (time, channel, height, width)
x = torch.randn(10, 3, 32, 32)
# Verschiebe die Zeitdimension an das Ende
y = torch.moveaxis(x, 0, -1)
print("Ursprüngliche Form:", x.shape)
print("Form nach dem Verschieben:", y.shape)
Das Ausgabeergebnis ist:
原始形状: torch.Size([10, 3, 32, 32]) 移动后形状: torch.Size([3, 32, 32, 10])
Beispiel
import torch
# Verschiebe mehrere Achsen auf einmal
x = torch.randn(2, 3, 4, 5)
# Verschiebe die Achsen 0 und 1 gemeinsam an die Positionen 2 und 3
y = torch.moveaxis(x, source=(0, 1), destination=(2, 3))
print("Ursprüngliche Form:", x.shape)
print("Form nach dem Verschieben:", y.shape)
# Verschiebe mehrere Achsen auf einmal
x = torch.randn(2, 3, 4, 5)
# Verschiebe die Achsen 0 und 1 gemeinsam an die Positionen 2 und 3
y = torch.moveaxis(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])
Hinweis:torch.moveaxisEs gibt eine Ansicht zurück, keine Kopie, daher ist die Operation effizient. Diese Funktion wird häufig verwendet, um Datenformen anzupassen, damit sie zu verschiedenen Deep-Learning-Frameworks oder APIs passen.
Andere Erweiterungen