PyTorch torch.index_reduce Funktion
PyTorch torch Referenzhandbuch
torch.index_reduceist eine Funktion in PyTorch, die verwendet wird, um die Werte eines Quelltensors auf angegebene Indexpositionen auf eine angegebene Weise zu aggregieren. Sie, entlang der angegebenen Dimensiondim, beiindexangegebene Indexpositionen, auf die angegebene Weise aggregierensourcedie Werte von.
Funktionsdefinition
torch.index_reduce(input, dim, index, source, reduce='mean', *, include_self=True)
Parameters:
input(Tensor): Eingabe-Tensor.dim(int): Die Dimension des Index.index(Tensor): Ein 1D-Integer-Tensor, der die Positionen angibt, zu denen aggregiert werden soll.source(Tensor): Der Quell-Tensor, die zu aggregierenden Werte.reduce(str): Die Aggregationsmethode, optionale Werte sind 'mean', 'prod', 'amax', 'amin'. Standard ist 'mean'.include_self(bool, optional): Ob die ursprünglichen Werte an den Indexpositionen selbst in die Aggregation einbezogen werden. Standard ist True.
Rückgabewert:
torch.Tensor: Gibt den aggregierten Tensor zurück.
Anwendungsbeispiele
Beispiel
# Eingabe-Tensor erstellen
input = torch.randn(3, 3)
# Indizes und Quelle erstellen
index = torch.tensor([0, 0, 0])
source = torch.tensor([1.0, 2.0, 3.0])
# Mittelwert-Aggregation verwenden
output = torch.index_reduce(input, dim=0, index=index, source=source, reduce='mean')
print("Eingabe:")
print(input)
print("nIndex:", index)
print("Quelle:", source)
print("nmean aggregation result:")
print(output)
Das Ausgabeergebnis ist:
输入:
tensor([[ 0.3456, -0.1234, 0.5678],
[-0.5678, 0.1234, -0.6789],
[ 0.7890, -0.3456, 0.1234]])
索引: tensor([0, 0, 0])
源: tensor([1., 2., 3.])
mean 聚合结果:
tensor([[ 2.5237, 0.2931, 0.3374],
[-0.5678, 0.1234, -0.6789],
[ 0.7890, -0.3456, 0.1234]])
Beispiel
# Verschiedene Aggregationsmethoden testen
input = torch.ones(3)
index = torch.tensor([0, 0, 0])
source = torch.tensor([2.0, 4.0, 6.0])
# prod-Aggregation
output_prod = torch.index_reduce(input, 0, index, source, reduce='prod')
print("prod-Aggregation:", output_prod)
# amax-Aggregation
output_max = torch.index_reduce(input, 0, index, source, reduce='amax')
print("amax-Aggregation:", output_max)
# amin-Aggregation
output_min = torch.index_reduce(input, 0, index, source, reduce='amin')
print("amin-Aggregation:", output_min)
Das Ausgabeergebnis ist:
prod 聚合: tensor([48., 1., 1.]) amax 聚合: tensor([7., 1., 1.]) amin 聚合: tensor([3., 1., 1.])
Beispiel
# include_self-Parameter
input = torch.tensor([1.0, 10.0, 100.0])
index = torch.tensor([0, 0])
source = torch.tensor([5.0, 5.0])
# Eigene Werte einbeziehen (Standard)
output1 = torch.index_reduce(input, 0, index, source, reduce='mean', include_self=True)
print("include_self=True:", output1)
# Eigene Werte ausschließen
output2 = torch.index_reduce(input, 0, index, source, reduce='mean', include_self=False)
print("include_self=False:", output2)
Das Ausgabeergebnis ist:
include_self=True: tensor([ 3.6667, 10.0000, 100.0000]) include_self=False: tensor([ 5., 10., 100.])
Beispiel
# 2D-Tensor-Anwendung
input = torch.zeros(3, 4)
index = torch.tensor([0, 2, 2])
source = torch.randn(3, 4)
# mean-Aggregation
output = torch.index_reduce(input, dim=0, index=index, source=source, reduce='mean')
print("Eingabeform:", input.shape)
print("Index:", index)
print("Quellform:", source.shape)
print("Ergebnisform:", output.shape)
print("nErgebnis:")
print(output)
Hinweis:torch.index_reduceEs ändert den ursprünglichen Eingabe-Tensor nicht, sondern gibt einen neuen Tensor zurück. Mehrere Indizes können auf dieselbe Position zeigen, und die Werte werden gemäß der angegebenen Aggregationsmethode aggregiert.include_self=FalseEs ist in einigen Szenarien nützlich, da es die ursprünglichen Werte ausschließen und nur neu hinzugefügte Werte aggregieren kann.
Andere Erweiterungen