Torch.gather() ist eine PyTorch-Funktion, die Elemente aus einem Tensor an einem angegebenen Index extrahiert.
Zu seinen Hauptfunktionen gehören:
- Extrahieren Sie Elemente aus einem mehrdimensionalen Tensor gemäß dem angegebenen Achsendimensions- und Indexindex und aggregieren Sie sie zu einem neuen Tensor.
- Sie können Vorgänge wie das Aufteilen und Neuanordnen von Tensoren gemäß angegebenen Indizes ausführen.
- Es kann mit Torch.scatter() verwendet werden, um den Effekt des Einfügens oder Kopierens von Tensorelementen an bestimmten Positionen zu erzielen.
Die grundlegende Syntax von Torch.gather() lautet wie folgt:
output = torch.gather(input, dim, index)
In:
- Eingabe: Eingabetensor
- dim: Sammelvorgang entlang dieser Achse durchführen
- Index: Index, der angibt, welche Elemente aus der Eingabe extrahiert werden sollen. Form und Größe müssen mit der Form der Eingabe auf der Dim-Achse übereinstimmen.
- Ausgabe: Ausgabetensor, Form ist index.shape + input.shape[dim+1:]
Ein einfaches Beispiel:
import torch
input = torch.tensor([[1,2],[3,4]])
index = torch.tensor([[0,0],[1,0]])
output_0 = torch.gather(input, 0, index)
print(output_0)
output_1 = torch.gather(input, 1, index)
print(output_1)
Ausgabeergebnis:
tensor([[1, 2],
[3, 2]])
tensor([[1, 1],
[4, 3]])
Hier erfolgt die Erfassung entlang der 0. Achse (horizontale Achse)/1. Achse (Spaltenachse) des Eingabetensors. Der Indexindex gibt den aus jeder Spalte/Zeile extrahierten Elementindex an, und schließlich wird ein neuer Ausgabetensor erhalten.
Kurz gesagt, Torch.gather() ist eine sehr nützliche Funktion, die viele Sammel-, Slice- und Neuordnungsvorgänge implementieren kann. Es ist notwendig, mit den Dimm- und Indexparametereinstellungen zusammenzuarbeiten, um unterschiedliche Effekte zu erzielen.