Función PyTorch torch.select_scatter
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)
# 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])
# 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)
# 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.
Otras extensiones