Функция torch.select_scatter в PyTorch


Pytorch torch 参考手册Справочное руководство PyTorch torch

torch.select_scatterявляется функцией в PyTorch, используемой для распределения исходного тензора в указанную позицию индекса. Онаsrcразмещает значенияinputв указанное измерениеdimи индексindexпозицию.

Определение функции

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

Parameters:

  • input(Tensor): Входной тензор, т. е. тензор, который нужно изменить.
  • src(Tensor): Исходный тензор, значения, которые должны быть распределены в input.
  • dim(int): Измерение распределения.
  • index(int): Индекс позиции распределения.

Возвращаемое значение:

  • torch.Tensor: Возвращает изменённый тензор.

Примеры использования

Пример

import torch

# Создать входной тензор и исходный тензор
input = torch.zeros(4, 4)
src = torch.ones(4)

# Распределить src в позиции с индексом 1 в первом измерении (строки)
output = torch.select_scatter(input, src, dim=0, index=1)

print("Входной тензор:")
print(input)
print("nТензор-источник:")
print(src)
print("nРезультат Scatter в позиции с индексом 1:")
print(output)

Результат вывода:

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

Пример

import torch

# Создать 3D-тензор
input = torch.zeros(3, 4, 5)
src = torch.ones(5)

# Scatter во втором измерении (индекс 2)
output = torch.select_scatter(input, src, dim=1, index=2)

print("Форма входных данных:", input.shape)
print("Форма источника:", src.shape)
print("Форма результата:", output.shape)
print("nРезультат (dim=1, index=2):")
print(output[0])

Результат вывода:

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

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

Пример

import torch

# Использовать другие значения
input = torch.arange(16).reshape(4, 4).float()
src = torch.tensor([100, 100, 100, 100])

# Scatter в последней строке
output = torch.select_scatter(input, src, dim=0, index=-1)

print("Исходный тензор:")
print(input)
print("nScatter в позицию с индексом -1:")
print(output)

Результат вывода:

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

Примечание:torch.select_scatterНе изменяет исходный входной тензор, но возвращает новый тензор.srcРазмерности должны совпадать с размерностями заменяемого среза.


Pytorch torch 参考手册Справочное руководство PyTorch torch

Другие расширения