คำนวณการสลายตัวของ Cholesky แบบกระจัดกระจายของ `อินพุต`
คำนวณการสลายตัวของ Sparse Cholesky ของเมทริกซ์แบบกระจัดกระจาย โดยมีการเรียงสับเปลี่ยนที่ลดการเติมที่กำหนด
เมทริกซ์กระจัดกระจายอินพุตและการเรียงลำดับการลดการเติม `การเรียงสับเปลี่ยน` จะต้องมีรูปร่างที่เข้ากันได้ หากเมทริกซ์กระจัดกระจายมีอันดับ 3; ด้วยมิติแบทช์ `B` ดังนั้น `การเรียงสับเปลี่ยน` จะต้องอยู่ในอันดับ 2 ด้วยมิติแบทช์เดียวกัน `B` ไม่มีการสนับสนุนการออกอากาศ
นอกจากนี้ เวกเตอร์ส่วนประกอบแต่ละส่วนของ "การเรียงสับเปลี่ยน" จะต้องมีความยาว "N" โดยมีจำนวนเต็มแต่ละตัว {0, 1, ..., N - 1} หนึ่งครั้ง โดยที่ "N" คือจำนวนแถวของแต่ละองค์ประกอบ ของเมทริกซ์กระจัดกระจาย
แต่ละองค์ประกอบของเมทริกซ์กระจัดกระจายอินพุตจะต้องแสดงถึงเมทริกซ์บวกแน่นอนแบบสมมาตร (SPD) แม้ว่าอ่านได้เฉพาะส่วนสามเหลี่ยมด้านล่างของเมทริกซ์ก็ตาม หากแต่ละองค์ประกอบไม่ใช่ SPD ข้อผิดพลาด InvalidArgument จะเกิดขึ้น
เมทริกซ์กระจัดกระจายที่ส่งคืนมีรูปร่างหนาแน่นเหมือนกับเมทริกซ์กระจัดกระจายอินพุต สำหรับแต่ละองค์ประกอบ `A` ของเมทริกซ์กระจัดกระจายอินพุต เมทริกซ์กระจัดกระจายเอาต์พุตที่สอดคล้องกันแสดงถึง `L` ซึ่งเป็นปัจจัย Cholesky สามเหลี่ยมล่างที่เป็นไปตามข้อมูลประจำตัวต่อไปนี้:
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` เก็บปัจจัย Cholesky ที่มีความหนาแน่น: [[ 1. 0. 0. 0.]
[ 0. 1.41 0. 0.]
[ 0. 0.70 1.58 0.]
[ 0. 0. 0. 2.]]
อินพุต: A `CSRSparseMatrix` การเรียงสับเปลี่ยน: `เทนเซอร์` type: ประเภทของ `อินพุต` วิธีการสาธารณะ
เอาต์พุต <วัตถุ> | เป็นเอาท์พุต () ส่งกลับค่าแฮนเดิลสัญลักษณ์ของเทนเซอร์ |
คงที่ <T> SparseMatrixSparseCholesky | |
เอาท์พุต <?> | เอาท์พุท () การสลายตัวของ Cholesky แบบกระจัดกระจายของ `อินพุต` |
วิธีการสืบทอด
วิธีการสาธารณะ
เอาท์พุท สาธารณะ <Object> asOutput ()
ส่งกลับค่าแฮนเดิลสัญลักษณ์ของเทนเซอร์
อินพุตสำหรับการดำเนินการ TensorFlow คือเอาต์พุตของการดำเนินการ TensorFlow อื่น วิธีการนี้ใช้เพื่อรับหมายเลขอ้างอิงสัญลักษณ์ที่แสดงถึงการคำนวณอินพุต
สร้าง SparseMatrixSparseCholesky สาธารณะแบบคงที่ (ขอบเขต ขอบเขต , อินพุต Operand <?>, การเปลี่ยน ลำดับ <Integer>, ประเภท Class <T>)
วิธีการจากโรงงานเพื่อสร้างคลาสที่รวมการดำเนินการ SparseMatrixSparseCholesky ใหม่
พารามิเตอร์
ขอบเขต | ขอบเขตปัจจุบัน |
---|---|
ป้อนข้อมูล | `CSRSparseMatrix` |
การเรียงสับเปลี่ยน | เมทริกซ์การเรียงสับเปลี่ยนแบบเติมแบบเติม |
การส่งคืน
- อินสแตนซ์ใหม่ของ SparseMatrixSparseCholesky