PyTorch torch.select_scatter Funktion
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)
# 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])
# 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)
# 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.
Andere Erweiterungen