PyTorch torch.slice_scatter Funktion
PyTorch torch Referenzhandbuch
torch.slice_scatterEs ist eine Funktion in PyTorch, die verwendet wird, um die Werte eines Quelltensors in die Slice-Positionen des Eingabetensors zu streuen.
Ihre Wirkung entsprichtinput[dim][start:end:step] = src, aber sie ändert den ursprünglichen Tensor nicht; stattdessen gibt sie einen neuen Tensor zurück.
Funktionsdefinition
torch.slice_scatterDie vollständige Funktionsdefinition lautet wie folgt:
torch.slice_scatter(input, src, dim=0, start=None, end=None, step=1)
Parameterbeschreibung
Die folgende Tabelle listettorch.slice_scatterihre verschiedenen Parameter:
| Parameter | Type | Erforderlich | Standardwert | Beschreibung |
|---|---|---|---|---|
input | Tensor | Erforderlich | — | Eingabe-Tensor, der zu ändernde Tensor. |
src | Tensor | Erforderlich | — | Quell-Tensor, die Werte, die in den Eingabe-Slice gestreut werden,seine Größe muss mit der Größe des Slices übereinstimmen.。 |
dim | int | Optional | 0 | Die Dimension für das Streuen. |
start | int | Optional | None | Startindex (einschließlichdieses Index), standardmäßig 0. |
end | int | Optional | None | Endindex (exklusivedieses Index), standardmäßig bis zum Ende. |
step | int | Optional | 1 | Schrittweite, mit derselben Bedeutung wie step beim Python-Slicing. |
Rückgabewert
Gibt den neuen gestreuten Tensor zurück (torch.Tensor), das Originalinputwird nicht geändert.
Anwendungsbeispiele
Die folgenden Beispiele demonstrierentorch.slice_scatterihre übliche Verwendung.
Beispiel
# Eingabe-Tensor und Quell-Tensor erstellen
input = torch.zeros(8, 4)
src = torch.ones(2, 4)
# Scatter src in die ersten beiden Zeilen von input
output = torch.slice_scatter(input, src, dim=0, end=2)
print("Eingabe-Tensor:")
print(input)
print("\nQuell-Tensor:")
print(src)
print("\nScatter-Ergebnis:")
print(output)
Die Ausgabe ist:
输入张量:
tensor([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
源张量:
tensor([[1., 1., 1., 1.],
[1., 1., 1., 1.]])
散布结果:
tensor([[1., 1., 1., 1.],
[1., 1., 1., 1.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
Beispiel
# Verwende start und end, um den Bereich anzugeben
input = torch.zeros(10)
src = torch.tensor([1, 2, 3])
# Scatter src an Positionen mit Indizes 2-4 von input
output = torch.slice_scatter(input, src, dim=0, start=2, end=5)
print("Eingabe:", input)
print("Quelle:", src)
print("Ergebnis:", output)
Die Ausgabe ist:
输入: tensor([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]) 源: tensor([1., 2., 3.]) 结果: tensor([0., 0., 1., 2., 3., 0., 0., 0., 0., 0.])
Beispiel
# Verwende den step-Parameter
input = torch.zeros(10)
src = torch.tensor([1, 2])
# Schrittweite ist 2, von Index 0 bis 4 (exklusiv), schreibt tatsächlich die Indizes 0 und 2
output = torch.slice_scatter(input, src, dim=0, start=0, end=4, step=2)
print("Eingabe:", input)
print("Quelle:", src)
print("Ergebnis mit Schritt 2:", output)
Die Ausgabe ist:
输入: tensor([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]) 源: tensor([1., 2.]) 步长为2的结果: tensor([1., 0., 2., 0., 0., 0., 0., 0., 0., 0.])
Hinweis:
torch.slice_scatterändert den ursprünglichen Eingabetensor nicht, gibt aber einen neuen Tensor zurück.Diese Funktion ist
torch.slicedie inverse Operation von.
Andere Erweiterungen