PyTorch torch.slice_scatter Funktion


Pytorch torch 参考手册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:

ParameterTypeErforderlichStandardwertBeschreibung
inputTensorErforderlich—Eingabe-Tensor, der zu ändernde Tensor.
srcTensorErforderlich—Quell-Tensor, die Werte, die in den Eingabe-Slice gestreut werden,seine Größe muss mit der Größe des Slices übereinstimmen.。
dimintOptional0Die Dimension für das Streuen.
startintOptionalNoneStartindex (einschließlichdieses Index), standardmäßig 0.
endintOptionalNoneEndindex (exklusivedieses Index), standardmäßig bis zum Ende.
stepintOptional1Schrittweite, 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

import torch

# 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

import torch

# 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

import torch

# 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 isttorch.slicedie inverse Operation von.


Pytorch torch 参考手册PyTorch torch Referenzhandbuch

Andere Erweiterungen