PyTorch torch.take Funktion


Pytorch torch 参考手册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)

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)

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)

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)

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).


Pytorch torch 参考手册PyTorch torch Referenzhandbuch

Andere Erweiterungen