Fonction torch.select_scatter de PyTorch
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)
# 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])
# 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)
# 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.
Autres extensions