РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
270 of 769 menu

Функция linalg.qr

Функция linalg.qr выполняет QR-разложение матрицы или пакета матриц. QR-разложение представляет матрицу в виде произведения ортогональной матрицы и верхнетреугольной матрицы. Первым параметром функция принимает тензор, вторым параметром можно указать режим разложения. Функция возвращает кортеж из двух тензоров: ортогональной матрицы Q и верхнетреугольной матрицы R.

Синтаксис

torch.linalg.qr(A, mode='reduced')

Параметры функции:

  • A - тензор формы (..., M, N), содержащий матрицы для разложения
  • mode - режим разложения: 'reduced' (по умолчанию), 'r' или 'complete'

Пример

Давайте выполним QR-разложение квадратной матрицы размером 3x3:

import torch t = torch.tensor([ [1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0], ]) Q, R = torch.linalg.qr(t) print("Q:") print(Q) print("R:") print(R)

Результат выполнения кода:

Q: tensor([ [-0.1231, -0.9045, 0.4082], [-0.4924, -0.3015, -0.8165], [-0.8616, 0.3015, 0.4082], ]) R: tensor([ [-8.1240, -9.6011, -11.0782], [ 0.0000, 0.9045, 1.8091], [ 0.0000, 0.0000, 0.0000], ])

Пример

Выполним QR-разложение с режимом 'r', который возвращает только матрицу R:

import torch t = torch.tensor([ [1.0, 2.0], [3.0, 4.0], [5.0, 6.0], ]) R = torch.linalg.qr(t, mode='r') print(R)

Результат выполнения кода:

tensor([ [-5.9161, -7.4374], [ 0.0000, 0.8291], ])

Пример

Выполним полное QR-разложение (режим 'complete') для матрицы 2x3:

import torch t = torch.tensor([ [1.0, 2.0, 3.0], [4.0, 5.0, 6.0], ]) Q, R = torch.linalg.qr(t, mode='complete') print("Q форма:", Q.shape) print("R форма:", R.shape) print("Q:") print(Q) print("R:") print(R)

Результат выполнения кода:

Q форма: torch.Size([2, 2]) R форма: torch.Size([2, 3]) Q: tensor([ [-0.2425, -0.9701], [-0.9701, 0.2425], ]) R: tensor([ [-4.1231, -5.3358, -6.5484], [ 0.0000, 0.7276, 1.4552], ])

Пример

Выполним QR-разложение для пакета матриц 3x3:

import torch torch.manual_seed(0) t = torch.randn(2, 3, 3) Q, R = torch.linalg.qr(t) print("Q форма:", Q.shape) print("R форма:", R.shape) print("Q[0]:") print(Q[0]) print("R[0]:") print(R[0])

Результат выполнения кода:

Q форма: torch.Size([2, 3, 3]) R форма: torch.Size([2, 3, 3]) Q[0]: tensor([ [-0.3307, -0.7600, -0.5597], [-0.4142, -0.2394, 0.8781], [ 0.8480, -0.6045, -0.0110], ]) R[0]: tensor([ [-1.7535, 0.5795, -0.7836], [ 0.0000, 1.4658, 0.5389], [ 0.0000, 0.0000, -1.1948], ])

Смотрите также

  • функцию svd,
    которая выполняет сингулярное разложение матриц
  • функцию lu,
    которая выполняет LU-разложение матриц
  • функцию cholesky,
    которая выполняет разложение Холецкого
  • функцию eig,
    которая находит собственные значения и векторы матриц
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить