Función PyTorch torch.select_scatter


Pytorch torch 参考手册Manual de referencia de Pytorch torch

torch.select_scatterEs una función en PyTorch utilizada para dispersar el tensor fuente en la posición de índice especificada. Dispersasrclos valores deinputen la dimensión especificada dedimy el índiceindexposición.

Definición de la función

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

Parámetros:

  • input(Tensor): El tensor de entrada, es decir, el tensor que se va a modificar.
  • src(Tensor): El tensor fuente, los valores que se dispersarán en input.
  • dim(int): La dimensión en la que se dispersa.
  • index(int): El índice de posición en el que se dispersa.

Valor de retorno:

  • torch.Tensor: Devuelve el tensor modificado.

Ejemplo de uso

Ejemplo

import torch

# Crear el tensor de entrada y el tensor fuente
input = torch.zeros(4, 4)
src = torch.ones(4)

# Dispersar src en la posición de índice 1 de la primera dimensión (filas)
output = torch.select_scatter(input, src, dim=0, index=1)

print("Tensor de entrada:")
print(input)
print("nTensor fuente:")
print(src)
print("nResultado de la dispersión en la posición de índice 1:")
print(output)

El resultado de salida es:

输入张量:
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.]])

Ejemplo

import torch

# Crear un tensor 3D
input = torch.zeros(3, 4, 5)
src = torch.ones(5)

# Dispersar en la segunda dimensión (índice 2)
output = torch.select_scatter(input, src, dim=1, index=2)

print("Forma de entrada:", input.shape)
print("Forma de la fuente:", src.shape)
print("Forma del resultado:", output.shape)
print("nResultado (dim=1, index=2):")
print(output[0])

El resultado de salida es:

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

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

Ejemplo

import torch

# Usar valores diferentes
input = torch.arange(16).reshape(4, 4).float()
src = torch.tensor([100, 100, 100, 100])

# Dispersar en la última fila
output = torch.select_scatter(input, src, dim=0, index=-1)

print("Tensor original:")
print(input)
print("nDispersado en la posición de índice -1:")
print(output)

El resultado de salida es:

原始张量:
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.]])

Nota:torch.select_scatterNo modifica el tensor de entrada original, sino que devuelve un nuevo tensor.srcLa dimensión de [src] debe coincidir con la dimensión del segmento que se va a reemplazar.


Pytorch torch 参考手册Manual de referencia de Pytorch torch

Otras extensiones