tf.raw_ops.SparseMatrixSparseCholesky
Вычисляет разреженное разложение Холецкого input.
tf.raw_ops.SparseMatrixSparseCholesky(
input, permutation, type, name=None
)
Вычисляет разреженное разложение Холецкого разреженной матрицы с заданной перестановкой, уменьшающей заполнение.
Входная разреженная матрица и перестановка, уменьшающая заполнение, permutation должны иметь совместимые формы. Если ранг разреженной матрицы равен 3, а размерность пакета равна B, то permutation должна иметь ранг 2 и ту же размерность пакета B. Широковещание не поддерживается.
Кроме того, длина каждого вектора-компонента permutation должна быть равна N; он должен содержать каждое из целых чисел {0, 1, ..., N - 1} ровно один раз, где N — число строк каждого компонента разреженной матрицы.
Каждый компонент входной разреженной матрицы должен представлять собой симметричную положительно определённую (SPD) матрицу; при этом считывается только её нижняя треугольная часть. Если какой-либо компонент не является SPD-матрицей, возникает ошибка InvalidArgument.
Возвращаемая разреженная матрица имеет ту же плотную форму, что и входная разреженная матрица. Для каждого компонента A входной разреженной матрицы соответствующая выходная разреженная матрица представляет L — нижний треугольный множитель Холецкого, удовлетворяющий следующему тождеству:
A = L * Lt
где Lt обозначает транспонированную матрицу L (или эрмитово-сопряжённую, если type имеет тип complex64 или complex128).
Параметр type задаёт тип элементов матрицы. Поддерживаются следующие типы: float32, float64, complex64 и complex128.
Пример использования:
from tensorflow.python.ops.linalg.sparse import sparse_csr_matrix_ops
a_indices = np.array([[0, 0], [1, 1], [2, 1], [2, 2], [3, 3]])
a_values = np.array([1.0, 2.0, 1.0, 3.0, 4.0], np.float32)
a_dense_shape = [4, 4]
with tf.Session() as sess:
# Define (COO format) SparseTensor over Numpy array.
a_st = tf.sparse.SparseTensor(a_indices, a_values, a_dense_shape)
# Convert SparseTensors to CSR SparseMatrix.
a_sm = sparse_csr_matrix_ops.sparse_tensor_to_csr_sparse_matrix(
a_st.indices, a_st.values, a_st.dense_shape)
# Obtain the Sparse Cholesky factor using AMD Ordering for reducing zero
# fill-in (number of structural non-zeros in the sparse Cholesky factor).
ordering_amd = sparse_csr_matrix_ops.sparse_matrix_ordering_amd(sparse_matrix)
cholesky_sparse_matrices = (
sparse_csr_matrix_ops.sparse_matrix_sparse_cholesky(
sparse_matrix, ordering_amd, type=tf.float32))
# Convert the CSRSparseMatrix Cholesky factor to a dense Tensor
dense_cholesky = sparse_csr_matrix_ops.csr_sparse_matrix_to_dense(
cholesky_sparse_matrices, tf.float32)
# Evaluate the dense Tensor value.
dense_cholesky_value = sess.run(dense_cholesky)
dense_cholesky_value хранит плотный множитель Холецкого:
[[ 1. 0. 0. 0.] [ 0. 1.41 0. 0.] [ 0. 0.70 1.58 0.] [ 0. 0. 0. 2.]]
входные данные: A CSRSparseMatrix. перестановка: A Tensor. тип: тип input.
| Аргументы | |
|---|---|
input | Tensor типа variant. CSRSparseMatrix. |
permutation | Tensor типа int32. Матрица перестановки, уменьшающая заполнение. |
type | tf.DType из: tf.float32, tf.float64, tf.complex64, tf.complex128. |
name | Имя операции (необязательно). |
| Возвращает | |
|---|---|
Tensor типа variant. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/raw_ops/SparseMatrixSparseCholesky