PyTorch torch.diagonal_scatter Funktion


Pytorch torch 参考手册PyTorch torch Referenzhandbuch

torch.diagonal_scatterist eine Funktion in PyTorch, die verwendet wird, um Werte in die diagonalen Positionen eines Tensors zu streuen. Siesrcstreut die Werte voninputauf die angegebene Diagonale von.

Funktionsdefinition

torch.diagonal_scatter(input, src, offset=0, dim1=0, dim2=1)

Parameters:

  • input(Tensor): Der Eingabetensor, d. h. der Tensor, der geändert werden soll.
  • src(Tensor): Der Quelltensor, die Werte, die in die diagonalen Positionen gestreut werden.
  • offset(int, optional): Der Diagonalversatz. Ein positiver Wert gibt eine Superdiagonale an, ein negativer Wert gibt eine Subdiagonale an, und 0 gibt die Hauptdiagonale an.
  • dim1(int, optional): Die erste Dimension, standardmäßig 0.
  • dim2(int, optional): Die zweite Dimension, standardmäßig 1.

Rückgabewert:

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

Anwendungsbeispiele

Beispiel

import torch

# Eingabe-Tensor erstellen
input = torch.zeros(4, 4)
src = torch.tensor([1, 2, 3, 4])

# Die Werte in die Hauptdiagonale streuen
output = torch.diagonal_scatter(input, src)

print("Eingabe-Tensor:")
print(input)
print("nQuell-Tensor:")
print(src)
print("nIn die Hauptdiagonale streuen:")
print(output)

Das Ausgabeergebnis ist:

输入张量:
tensor([[0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.],
        [0., 0., 0., 0.]])

源张量:
tensor([1, 2, 3, 4])

散布到主对角线:
tensor([[1., 0., 0., 0.],
        [0., 2., 0., 0.],
        [0., 0., 3., 0.],
        [0., 0., 0., 4.]])

Beispiel

import torch

# Eingabe-Tensor erstellen
input = torch.zeros(4, 4)
src = torch.tensor([1, 2, 3])

# Die Werte in die Superdiagonale (offset=1) streuen
output = torch.diagonal_scatter(input, src, offset=1)

print("In die Superdiagonale streuen (offset=1):")
print(output)

# Die Werte in die Subdiagonale (offset=-1) streuen
output2 = torch.diagonal_scatter(input, src, offset=-1)

print("nStreuen auf die Subdiagonale (offset=-1):")
print(output2)

Das Ausgabeergebnis ist:

散布到上对角线 (offset=1):
tensor([[0., 1., 0., 0.],
        [0., 0., 2., 0.],
        [0., 0., 0., 3.],
        [0., 0., 0., 0.]])

散布到下对角线 (offset=-1):
tensor([[0., 0., 0., 0.],
        [1., 0., 0., 0.],
        [0., 2., 0., 0.],
        [0., 0., 3., 0.]])

Beispiel

import torch

# Diagonalen in einem 3D-Tensor verwenden
input = torch.zeros(3, 4, 4)
src = torch.tensor([10, 20, 30])

# Streuen auf den beiden angegebenen Dimensionen
output = torch.diagonal_scatter(input, src, dim1=1, dim2=2)

print("Eingabeform:", input.shape)
print("Quellform:", src.shape)
print("Ergebnisform:", output.shape)

# Ersten Batch anzeigen
print("nErgebnis vom ersten Batch:")
print(output[0])

Das Ausgabeergebnis ist:

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

第一个batch的结果:
tensor([[10., 0., 0., 0.],
        [0., 20., 0., 0.],
        [0., 0., 30., 0.],
        [0., 0., 0., 0.]])

Hinweis:torch.diagonal_scatterEs verändert den ursprünglichen Eingabe-Tensor nicht, sondern gibt einen neuen Tensor zurück.srcDie Größe von muss mit der Anzahl der Diagonalelemente übereinstimmen.


Pytorch torch 参考手册PyTorch torch Referenzhandbuch

Andere Erweiterungen