Fonction torch.select_scatter de PyTorch


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

torch.select_scatterest une fonction dans PyTorch utilisée pour disperser le tenseur source vers une position d'index spécifiée. Ellesrcdisperse les valeurs deinputdans la dimension spécifiéedimet l'indexindexposition.

Définition de fonction

torch.select_scatter(input, src, dim, index)

Parameters:

  • input(Tensor) : Le tenseur d'entrée, c'est-à-dire le tenseur à modifier.
  • src(Tensor) : Le tenseur source, les valeurs à disperser dans input.
  • dim(int) : La dimension de dispersion.
  • index(int) : L'index de position de dispersion.

Valeur de retour:

  • torch.Tensor: Renvoie le tenseur modifié.

Exemples d'utilisation

Exemple

import torch

# Créer le tenseur d'entrée et le tenseur source
input = torch.zeros(4, 4)
src = torch.ones(4)

# Disperser src à la position d'index 1 dans la première dimension (lignes)
output = torch.select_scatter(input, src, dim=0, index=1)

print("Tenseur d'entrée :")
print(input)
print("nTenseur source :")
print(src)
print("nScatter résultat à la position d'indice 1 :")
print(output)

Le résultat de sortie est:

输入张量:
tensor([[0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.]])

源张量:
tensor([1., 1., 1., 1.])

在索引1位置散布结果:
tensor([[0., 0., 0., 0.],
        [1., 1., 1., 1.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.]])

Exemple

import torch

# Créer un tenseur 3D
input = torch.zeros(3, 4, 5)
src = torch.ones(5)

# Scatter dans la deuxième dimension (indice 2)
output = torch.select_scatter(input, src, dim=1, index=2)

print("Forme de l'entrée :", input.shape)
print("Forme de la source :", src.shape)
print("Forme du résultat :", output.shape)
print("nRésultat (dim=1, indice=2) :")
print(output[0])

Le résultat de sortie est:

输入形状: torch.Size([3, 4, 5])
源形状: torch.Size([5])
结果形状: torch.Size([3, 4, 5])

结果 (dim=1, index=2):
tensor([1., 1., 1., 1., 1.])

Exemple

import torch

# Utiliser des valeurs différentes
input = torch.arange(16).reshape(4, 4).float()
src = torch.tensor([100, 100, 100, 100])

# Scatter à la dernière ligne
output = torch.select_scatter(input, src, dim=0, index=-1)

print("Tenseur d'origine :")
print(input)
print("nScattered vers la position d'indice -1 :")
print(output)

Le résultat de sortie est:

原始张量:
tensor([[ 0.,  1.,  2.,  3.],
        [ 4.,  5.,  6.,  7.],
        [ 8.,  9., 10., 11.],
        [12., 13., 14., 15.]])

散布到索引-1位置:
tensor([[ 0.,  1.,  2.,  3.],
        [ 4.,  5.,  6.,  7.],
        [ 8.,  9., 10., 11.],
        [100., 100., 100., 100.]])

Remarque :torch.select_scatterNe modifie pas le tenseur d'entrée d'origine, mais renvoie un nouveau tenseur.srcLes dimensions doivent correspondre aux dimensions de la tranche à remplacer.


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

Autres extensions