PyTorch torch.select_scatter Funktion


Pytorch torch 参考手册PyTorch torch-Referenzhandbuch

torch.select_scatterist eine Funktion in PyTorch, mit der der Quell-Tensor an eine angegebene Indexposition gestreut wird. Siesrcstreut die Werte voninputin die angegebene Dimensiondimund IndexindexPosition.

Funktionsdefinition

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

Parameters:

  • input(Tensor): Der Eingabetensor, d. h. der Tensor, der geändert werden soll.
  • src(Tensor): Der Quell-Tensor, die Werte, die in input gestreut werden sollen.
  • dim(int): Die Dimension des Streuens.
  • index(int): Der Positionsindex des Streuens.

Rückgabewert:

  • torch.Tensor: Gibt den geänderten Tensor zurück.

Anwendungsbeispiele

Beispiel

import torch

# Erstelle den input-Tensor und den Quell-Tensor
input = torch.zeros(4, 4)
src = torch.ones(4)

# Streue src an der Index-1-Position in der ersten Dimension (Zeilen)
output = torch.select_scatter(input, src, dim=0, index=1)

print("Eingabe-Tensor:")
print(input)
print("nQuell-Tensor:")
print(src)
print("nScatter-Ergebnis an Index-1-Position:")
print(output)

Das Ausgabeergebnis ist:

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

Beispiel

import torch

# Erstelle einen 3D-Tensor
input = torch.zeros(3, 4, 5)
src = torch.ones(5)

# Scatter in der zweiten Dimension (Index 2)
output = torch.select_scatter(input, src, dim=1, index=2)

print("Eingabeform:", input.shape)
print("Quellform:", src.shape)
print("Ergebnisform:", output.shape)
print("nErgebnis (dim=1, index=2):")
print(output[0])

Das Ausgabeergebnis ist:

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

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

Beispiel

import torch

# Andere Werte verwenden
input = torch.arange(16).reshape(4, 4).float()
src = torch.tensor([100, 100, 100, 100])

# Scatter in der letzten Zeile
output = torch.select_scatter(input, src, dim=0, index=-1)

print("Original-Tensor:")
print(input)
print("nAn Index -1-Position gestreut:")
print(output)

Das Ausgabeergebnis ist:

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

Hinweis:torch.select_scatterÄndert den Eingabe-Tensor nicht, sondern gibt einen neuen Tensor zurück.srcDie Dimensionen müssen mit den Dimensionen des zu ersetzenden Slice übereinstimmen.


Pytorch torch 参考手册PyTorch torch-Referenzhandbuch

Andere Erweiterungen