Spec-Zone.ru › TensorFlow 2.4

tf.linalg.banded_triangular_solve

Решает треугольные системы уравнений с использованием бандового решателя.

tf.linalg.banded_triangular_solve(
    bands, rhs, lower=True, adjoint=False, name=None
)

bands — это тензор формы [..., K, M], где K представляет количество хранимых полос. Это соответствует набору из M на M матриц, у которых K поддиагоналей (когда lower равно True) хранятся.

Этот оператор транслирует размерность пакета bands и размерность пакета rhs.

Примеры:

Хранение 2 полос 3x3 матрицы. Обратите внимание, что первый элемент во второй строке игнорируется из-за заполнения 'LEFT_RIGHT'.

x = [[2., 3., 4.], [1., 2., 3.]]
x2 = [[2., 3., 4.], [10000., 2., 3.]]
y = tf.zeros([3, 3])
z = tf.linalg.set_diag(y, x, align='LEFT_RIGHT', k=(-1, 0))
z
<tf.Tensor: shape=(3, 3), dtype=float32, numpy=
array([[2., 0., 0.],
       [2., 3., 0.],
       [0., 3., 4.]], dtype=float32)>
soln = tf.linalg.banded_triangular_solve(x, tf.ones([3, 1]))
soln
<tf.Tensor: shape=(3, 1), dtype=float32, numpy=
array([[0.5 ],
       [0.  ],
       [0.25]], dtype=float32)>
are_equal = soln == tf.linalg.banded_triangular_solve(x2, tf.ones([3, 1]))
tf.reduce_all(are_equal).numpy()
True
are_equal = soln == tf.linalg.triangular_solve(z, tf.ones([3, 1]))
tf.reduce_all(are_equal).numpy()
True

Хранение 2 наддиагоналей 4x4 матрицы. Из-за заполнения 'LEFT_RIGHT' последний элемент первой строки игнорируется.

x = [[2., 3., 4., 5.], [-1., -2., -3., -4.]]
y = tf.zeros([4, 4])
z = tf.linalg.set_diag(y, x, align='LEFT_RIGHT', k=(0, 1))
z
<tf.Tensor: shape=(4, 4), dtype=float32, numpy=
array([[-1.,  2.,  0.,  0.],
       [ 0., -2.,  3.,  0.],
       [ 0.,  0., -3.,  4.],
       [ 0.,  0., -0., -4.]], dtype=float32)>
soln = tf.linalg.banded_triangular_solve(x, tf.ones([4, 1]), lower=False)
soln
<tf.Tensor: shape=(4, 1), dtype=float32, numpy=
array([[-4.       ],
       [-1.5      ],
       [-0.6666667],
       [-0.25     ]], dtype=float32)>
are_equal = (soln == tf.linalg.triangular_solve(
  z, tf.ones([4, 1]), lower=False))
tf.reduce_all(are_equal).numpy()
True
Аргументы
bands Описание полос левой части, с формой [..., K, M]. Строки K соответствуют диагонали до K - 1-ой диагонали (диагональ — верхняя строка), когда lower равно True, а в противном случае — K - 1-ой наддиагонали к диагонали (диагональ — нижняя строка), когда lower равно False. Полосы хранятся с выравниванием 'LEFT_RIGHT', где наддиагонали заполняются справа, а поддиагонали — слева. Это выравнивание используется в cuSPARSE. Подробнее см. в tf.linalg.set_diag.
rhs Тензор формы [..., M] или [..., M, N] и с тем же типом данных, что и diagonals. Обратите внимание, что если форма rhs и/или diags неизвестна статически, то rhs будет обрабатываться как матрица, а не как вектор.
lower Необязательная булева переменная. По умолчанию True. Булево значение, указывающее, представляет ли bands нижнюю или верхнюю треугольную матрицу.
adjoint Необязательная булева переменная. По умолчанию False. Булево значение, указывающее, нужно ли решать с сопряжённой по блокам матрицей.
name Имя для этой операции (необязательно).
Возвращаемое значение
Тензор формы [..., M] или [..., M, N], содержащий решения.

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/linalg/banded_triangular_solve

Spec-Zone.ru

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