Fonction torch.slice_scatter de PyTorch


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

torch.slice_scatterC'est une fonction dans PyTorch utilisée pour disperser les valeurs d'un tenseur source aux positions de tranche du tenseur d'entrée.

Son effet est équivalent àinput[dim][start:end:step] = src, mais il ne modifie pas le tenseur d'origine ; au lieu de cela, il renvoie un nouveau tenseur.

Définition de fonction

torch.slice_scatterLa définition complète de la fonction est la suivante :

torch.slice_scatter(input, src, dim=0, start=None, end=None, step=1)

Description du paramètre

Le tableau suivant répertorietorch.slice_scatterses différents paramètres :

ParamètreTypeRequisValeur par défautDescription
inputTensorRequis—Tenseur d'entrée, le tenseur à modifier.
srcTensorRequis—Tenseur source, les valeurs à disperser dans la tranche d'entrée,sa taille doit correspondre à la taille de la tranche.。
dimintOptional0La dimension pour la dispersion.
startintOptionalNoneIndice de début (inclusde cet indice), vaut 0 par défaut.
endintOptionalNoneIndice de fin (exclude cet indice), vaut la fin par défaut.
stepintOptional1Taille du pas, avec la même signification que step dans le slicing Python.

Valeur de retour

Renvoie le nouveau tenseur dispersé (torch.Tensor), l'originalinputne sera pas modifié.


Exemples d'utilisation

Les exemples suivants démontrenttorch.slice_scatterson utilisation courante.

Exemple

import torch

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

# Répartir src dans les deux premières lignes de input
output = torch.slice_scatter(input, src, dim=0, end=2)

print("Tenseur d'entrée :")
print(input)
print("\nTenseur source :")
print(src)
print("\nRésultat du scatter :")
print(output)

La sortie est :

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

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

散布结果:
tensor([[1., 1., 1., 1.],
        [1., 1., 1., 1.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.]])

Exemple

import torch

# Utiliser start et end pour spécifier l'intervalle
input = torch.zeros(10)
src = torch.tensor([1, 2, 3])

# Répartir src aux positions des indices 2-4 de input
output = torch.slice_scatter(input, src, dim=0, start=2, end=5)

print("Entrée :", input)
print("Source :", src)
print("Résultat :", output)

La sortie est :

输入: tensor([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
源: tensor([1., 2., 3.])
结果: tensor([0., 0., 1., 2., 3., 0., 0., 0., 0., 0.])

Exemple

import torch

# Utiliser le paramètre step
input = torch.zeros(10)
src = torch.tensor([1, 2])

# La taille du pas est 2, de l'indice 0 à 4 (exclu), écrit en fait les indices 0 et 2
output = torch.slice_scatter(input, src, dim=0, start=0, end=4, step=2)

print("Entrée :", input)
print("Source :", src)
print("Résultat avec un pas de 2 :", output)

La sortie est :

输入: tensor([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
源: tensor([1., 2.])
步长为2的结果: tensor([1., 0., 2., 0., 0., 0., 0., 0., 0., 0.])

Remarque :torch.slice_scatterne modifie pas le tenseur d'entrée d'origine, mais renvoie un nouveau tenseur.

Cette fonction esttorch.slicel'opération inverse de.


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

Autres extensions