PyTorch torch.take Funktion
PyTorch torch Referenzhandbuch
torch.takeEs ist eine Funktion in PyTorch, die verwendet wird, um Elemente an bestimmten Indexpositionen abzurufen. Sie behandelt den Eingabetensor als eindimensionales Array und gibt die Elemente an den angegebenen Indexpositionen zurück.
Funktionsdefinition
torch.take(input, index)
Parameters:
input(Tensor): Eingabe-Tensor.index(Tensor): Ganzzahliger Index-Tensor, der die Positionen der abzurufenden Elemente angibt.
Rückgabewert:
torch.Tensor: Gibt einen neuen Tensor zurück, der aus den Elementen an den angegebenen Indexpositionen besteht.
Anwendungsbeispiel
Beispiel
import torch
# Einen 2D-Tensor erstellen
x = torch.tensor([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print("Original-Tensor:")
print(x)
# Den 2D-Tensor als eindimensionales Array behandeln, Indizes 0-8
# Elemente an den Indizes 0, 4, 8 abrufen
index = torch.tensor([0, 4, 8])
y = torch.take(x, index)
print("nIndex:", index)
print("Extrahierte Elemente:", y)
# Einen 2D-Tensor erstellen
x = torch.tensor([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print("Original-Tensor:")
print(x)
# Den 2D-Tensor als eindimensionales Array behandeln, Indizes 0-8
# Elemente an den Indizes 0, 4, 8 abrufen
index = torch.tensor([0, 4, 8])
y = torch.take(x, index)
print("nIndex:", index)
print("Extrahierte Elemente:", y)
Das Ausgabeergebnis ist:
原始张量:
tensor([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
索引: tensor([0, 4, 8])
取出的元素: tensor([1, 5, 9])
Beispiel
import torch
# 3D-Tensor
x = torch.arange(24).reshape(2, 3, 4)
print("Ursprünglicher 3D-Tensor:")
print(x)
print("Form:", x.shape)
# Elemente an mehreren Indizes abrufen
index = torch.tensor([0, 1, 2, 10, 20, 23])
y = torch.take(x, index)
print("nIndex:", index)
print("Extrahierte Elemente:", y)
# 3D-Tensor
x = torch.arange(24).reshape(2, 3, 4)
print("Ursprünglicher 3D-Tensor:")
print(x)
print("Form:", x.shape)
# Elemente an mehreren Indizes abrufen
index = torch.tensor([0, 1, 2, 10, 20, 23])
y = torch.take(x, index)
print("nIndex:", index)
print("Extrahierte Elemente:", y)
Das Ausgabeergebnis ist:
原始3D张量:
tensor([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
形状: torch.Size([2, 3, 4])
索引: tensor([ 0, 1, 2, 10, 20, 23])
取出的元素: tensor([ 0, 1, 2, 10, 20, 23])
Beispiel
import torch
# Negative Indizes verwenden
x = torch.tensor([[1, 2, 3],
[4, 5, 6]])
# Negative Indizes werden vom Ende her gezählt
index = torch.tensor([0, -1]) # Die ersten und letzten Elemente
y = torch.take(x, index)
print("Original:", x)
print("Index [0, -1]:", y)
# Negative Indizes verwenden
x = torch.tensor([[1, 2, 3],
[4, 5, 6]])
# Negative Indizes werden vom Ende her gezählt
index = torch.tensor([0, -1]) # Die ersten und letzten Elemente
y = torch.take(x, index)
print("Original:", x)
print("Index [0, -1]:", y)
Das Ausgabeergebnis ist:
原始: tensor([[1, 2, 3],
[4, 5, 6]])
索引 [0, -1]: tensor([1, 6])
Beispiel
import torch
# Zufällig Elemente auswählen
x = torch.randn(10, 10)
# Zufällig 10 Indizes generieren
index = torch.randint(0, 100, (10,))
print("Zufällige Indizes:", index)
# Elemente an den entsprechenden Positionen abrufen
selected = torch.take(x, index)
print("Form des ursprünglichen Tensors:", x.shape)
print("Form der ausgewählten Elemente:", selected.shape)
print("Ausgewählte Elemente:", selected)
# Zufällig Elemente auswählen
x = torch.randn(10, 10)
# Zufällig 10 Indizes generieren
index = torch.randint(0, 100, (10,))
print("Zufällige Indizes:", index)
# Elemente an den entsprechenden Positionen abrufen
selected = torch.take(x, index)
print("Form des ursprünglichen Tensors:", x.shape)
print("Form der ausgewählten Elemente:", selected.shape)
print("Ausgewählte Elemente:", selected)
Das Ausgabeergebnis ist:
随机索引: tensor([12, 45, 67, 82, 35, 59, 92, 7, 28, 73]) 原始张量形状: torch.Size([10, 10]) 选中的元素形状: torch.Size([10]) 选中的元素: tensor([ 0.2345, -0.1234, 0.5678, 1.2345, -0.6789, 0.8901, -0.3456, 0.1234, -0.5678, 0.7890])
Hinweis:torch.takeDer Eingabetensor wird für die Indizierung als abgeflachter eindimensionaler Tensor behandelt. Indizes müssen im gültigen Bereich liegen (0 bis numel-1). Negative Indizes können ebenfalls verwendet werden (-1 steht für das letzte Element).
Andere Erweiterungen