Calcula a decomposição esparsa de Cholesky de `entrada`.
Calcula a decomposição esparsa de Cholesky de uma matriz esparsa, com o preenchimento fornecido reduzindo a permutação.
A matriz esparsa de entrada e a permutação de redução de preenchimento `permutação` devem ter formas compatíveis. Se a matriz esparsa tiver classificação 3; com a dimensão de lote `B`, então a `permutação` deve ser de classificação 2; com a mesma dimensão de lote `B`. Não há suporte para transmissão.
Além disso, cada vetor componente de `permutação` deve ter comprimento `N`, contendo cada um dos inteiros {0, 1, ..., N - 1} exatamente uma vez, onde `N` é o número de linhas de cada componente da matriz esparsa.
Cada componente da matriz esparsa de entrada deve representar uma matriz definida positiva simétrica (SPD); embora apenas a parte triangular inferior da matriz seja lida. Se algum componente individual não for SPD, um erro InvalidArgument será gerado.
A matriz esparsa retornada tem o mesmo formato denso da matriz esparsa de entrada. Para cada componente `A` da matriz esparsa de entrada, a matriz esparsa de saída correspondente representa `L`, o fator de Cholesky triangular inferior que satisfaz a seguinte identidade:
A = L * Lt
O parâmetro `type` denota o tipo dos elementos da matriz. Os tipos suportados são: `float32`, `float64`, `complex64` e `complex128`.
Exemplo de uso:
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)
[[ 1. 0. 0. 0.]
[ 0. 1.41 0. 0.]
[ 0. 0.70 1.58 0.]
[ 0. 0. 0. 2.]]
Constantes
Corda | OP_NAME | O nome desta operação, conforme conhecido pelo mecanismo principal do TensorFlow |
Métodos Públicos
Saída <TType> | asOutput () Retorna o identificador simbólico do tensor. |
estático <T estende TType > SparseMatrixSparseCholesky | create (escopo do escopo , entrada do operando <?>, permutação do operando <TInt32> , tipo Class<T>) Método de fábrica para criar uma classe que envolve uma nova operação SparseMatrixSparseCholesky. |
Saída <?> | saída () A esparsa descompressão de Cholesky de `input`. |
Métodos herdados
Constantes
String final estática pública OP_NAME
O nome desta operação, conforme conhecido pelo mecanismo principal do TensorFlow
Métodos Públicos
saída pública < TType > asOutput ()
Retorna o identificador simbólico do tensor.
As entradas para operações do TensorFlow são saídas de outra operação do TensorFlow. Este método é usado para obter um identificador simbólico que representa o cálculo da entrada.
public static SparseMatrixSparseCholesky create (escopo do escopo , entrada do operando <?>, permutação do operando <TInt32> , tipo Class<T>)
Método de fábrica para criar uma classe que envolve uma nova operação SparseMatrixSparseCholesky.
Parâmetros
escopo | escopo atual |
---|---|
entrada | Um `CSRSparseMatrix`. |
permutação | Uma matriz de permutação redutora de preenchimento. |
Devoluções
- uma nova instância de SparseMatrixSparseCholesky