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

Функция linalg.qr

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

QR-разложение представляет матрицу A в виде произведения двух матриц: A = QR, где Q - ортогональная матрица, а R - верхняя треугольная матрица. Функция возвращает кортеж из двух тензоров.

Синтаксис

tf.linalg.qr(input, full_matrices=False, name=None)

Пример

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

import tensorflow as tf t = tf.constant([[1.0, 2.0], [3.0, 4.0]]) q, r = tf.linalg.qr(t) print("Q:") print(q) print("R:") print(r)

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

Q: tf.Tensor( [[-0.31622776 -0.9486833 ] [-0.9486833 0.31622776]], shape=(2, 2), dtype=float32) R: tf.Tensor( [[-3.1622777 -4.4271884] [ 0. 0.6324555]], shape=(2, 2), dtype=float32)

Пример

Давайте проверим, что произведение Q и R восстанавливает исходную матрицу:

import tensorflow as tf t = tf.constant([[1.0, 2.0], [3.0, 4.0]]) q, r = tf.linalg.qr(t) res = tf.matmul(q, r) print(res)

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

tf.Tensor( [[1. 2.] [3. 4.]], shape=(2, 2), dtype=float32)

Пример

Давайте выполним QR-разложение для прямоугольной матрицы с режимом full_matrices=False:

import tensorflow as tf t = tf.constant([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]) q, r = tf.linalg.qr(t, full_matrices=False) print("Q:") print(q) print("R:") print(r)

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

Q: tf.Tensor( [[-0.24253564 -0.97014254] [-0.97014254 0.24253564]], shape=(2, 2), dtype=float32) R: tf.Tensor( [[-4.1231055 -5.335783 -6.548461 ] [ 0. 0.24253564 0.4850713 ]], shape=(2, 3), dtype=float32)

Пример

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

import tensorflow as tf t = tf.constant([[[1.0, 2.0], [3.0, 4.0]], [[5.0, 6.0], [7.0, 8.0]]]) q, r = tf.linalg.qr(t) print("Q:") print(q) print("R:") print(r)

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

Q: tf.Tensor( [[[-0.31622776 -0.9486833 ] [-0.9486833 0.31622776]] [[-0.5812382 -0.81373346] [-0.81373346 0.5812382 ]]], shape=(2, 2, 2), dtype=float32) R: tf.Tensor( [[[-3.1622777 -4.4271884] [ 0. 0.6324555]] [[-8.602325 -9.765361 ] [ 0. 0.2324953]]], shape=(2, 2, 2), dtype=float32)

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

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