Spec-Zone.ru › PyTorch 2.14

torch.diagonal

torch.diagonal(input, offset=0, dim1=0, dim2=1) → Tensor

Возвращает частичное представление input с диагональными элементами относительно dim1 и dim2, добавленными в качестве измерения в конец формы.

Аргумент offset определяет, какую диагональ следует рассматривать:

  • Если offset = 0, это главная диагональ.
  • Если offset > 0, это диагональ выше главной.
  • Если offset < 0, это диагональ ниже главной.

Применение torch.diag_embed() к результату этой функции с теми же аргументами возвращает диагональную матрицу с диагональными элементами входных данных. Однако у torch.diag_embed() другие значения измерений по умолчанию, поэтому их необходимо указать явно.

Параметры:
  • input (Tensor) – входной тензор. Должен иметь не менее двух измерений.
  • offset (int, необязательный) – какую диагональ следует рассматривать. Значение по умолчанию: 0 (главная диагональ).
  • dim1 (int, необязательный) – первое измерение, относительно которого следует взять диагональ. Значение по умолчанию: 0.
  • dim2 (int, необязательный) – второе измерение, относительно которого следует взять диагональ. Значение по умолчанию: 1.

Примечание

Чтобы получить пакет диагоналей, передайте dim1=-2, dim2=-1.

Примеры:

>>> a = torch.randn(3, 3)
>>> a
tensor([[-1.0854,  1.1431, -0.1752],
        [ 0.8536, -0.0905,  0.0360],
        [ 0.6927, -0.3735, -0.4945]])


>>> torch.diagonal(a)
tensor([-1.0854, -0.0905, -0.4945])


>>> torch.diagonal(a, 1)
tensor([ 1.1431,  0.0360])

>>> b = torch.randn(2, 5)
>>> b
tensor([[-1.7948, -1.2731, -0.3181,  2.0200, -1.6745],
        [ 1.8262, -1.5049,  0.4114,  1.0704, -1.2607]])

>>> torch.diagonal(b, 1, 1, 0)
tensor([1.8262])

>>> x = torch.randn(2, 5, 4, 2)
>>> torch.diagonal(x, offset=-1, dim1=1, dim2=2)
tensor([[[-1.2631,  0.3755, -1.5977, -1.8172],
         [-1.1065,  1.0401, -0.2235, -0.7938]],

        [[-1.7325, -0.3081,  0.6166,  0.2335],
         [ 1.0500,  0.7336, -0.3836, -1.1015]]])

© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.diagonal.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API