Fonction torch.take de PyTorch


Pytorch torch 参考手册Manuel de référence Pytorch torch

torch.takeC'est une fonction de PyTorch utilisée pour récupérer des éléments aux positions d'index données. Elle traite le tenseur d'entrée comme un tableau unidimensionnel et retourne les éléments aux positions d'index spécifiées.

Définition de fonction

torch.take(input, index)

Parameters:

  • input(Tensor) : tenseur d'entrée.
  • index(Tensor) : tenseur d'indices entiers spécifiant les positions des éléments à récupérer.

Valeur de retour:

  • torch.Tensor: Renvoie un nouveau tenseur composé des éléments aux positions d'indices spécifiées.

Exemple d'utilisation

Exemple

import torch

# Créer un tenseur 2D
x = torch.tensor([[1, 2, 3],
                  [4, 5, 6],
                  [7, 8, 9]])

print("Tenseur d'origine :")
print(x)

# Traiter le tenseur 2D comme un tableau unidimensionnel, indices 0-8
# Récupérer les éléments aux indices 0, 4, 8
index = torch.tensor([0, 4, 8])
y = torch.take(x, index)

print("nIndex:", index)
print("Éléments extraits :", y)

Le résultat de sortie est:

原始张量:
tensor([[1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]])

索引: tensor([0, 4, 8])
取出的元素: tensor([1, 5, 9])

Exemple

import torch

# tenseur 3D
x = torch.arange(24).reshape(2, 3, 4)

print("Tenseur 3D original :")
print(x)
print("Forme :", x.shape)

# Récupérer les éléments à plusieurs indices
index = torch.tensor([0, 1, 2, 10, 20, 23])
y = torch.take(x, index)

print("nIndex:", index)
print("Éléments extraits :", y)

Le résultat de sortie est:

原始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])

Exemple

import torch

# Utiliser des indices négatifs
x = torch.tensor([[1, 2, 3],
                  [4, 5, 6]])

# Les indices négatifs sont comptés à partir de la fin
index = torch.tensor([0, -1])  # Les premier et dernier éléments
y = torch.take(x, index)

print("Original:", x)
print("Indice [0, -1] :", y)

Le résultat de sortie est:

原始: tensor([[1, 2, 3],
        [4, 5, 6]])
索引 [0, -1]: tensor([1, 6])

Exemple

import torch

# Sélectionner aléatoirement des éléments
x = torch.randn(10, 10)

# Générer aléatoirement 10 indices
index = torch.randint(0, 100, (10,))
print("Indices aléatoires :", index)

# Récupérer les éléments aux positions correspondantes
selected = torch.take(x, index)

print("Forme du tenseur d'origine :", x.shape)
print("Forme des éléments sélectionnés :", selected.shape)
print("Éléments sélectionnés :", selected)

Le résultat de sortie est:

随机索引: 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])

Remarque :torch.takeLe tenseur d'entrée est traité comme un tenseur unidimensionnel aplati pour l'indexation. Les indices doivent être dans la plage valide (0 à numel-1). Les indices négatifs peuvent également être utilisés (-1 représente le dernier élément).


Pytorch torch 参考手册Manuel de référence Pytorch torch

Autres extensions