מטריצה דלילה-מכפילה שתי מטריצות CSR 'a' ו-'b'.
מבצע כפל מטריצה של מטריצה דלילה `a` עם מטריצה דלילה `b`; מחזירה מטריצה דלילה `a * b`, אלא אם כן `a` או `b` עוברים טרנספוזיציה או צמודים.
ניתן לבצע טרנספוזיציה או חיבור של כל מטריצה (מצומדת והעברה) לפי הפרמטרים הבוליאניים `transpose_a`, `adjoint_a`, `transpose_b` ו-`adjoint_b`. לכל היותר אחד מ-'transpose_a' או 'adjoint_a' עשוי להיות נכון. באופן דומה, לכל היותר אחד מ-'transpose_b' או 'adjoint_b' עשוי להיות נכון.
הקלט חייב להיות בעל צורות תואמות. כלומר, הממד הפנימי של `a` חייב להיות שווה למימד החיצוני של `b`. דרישה זו מותאמת בהתאם לשאלה אם 'a' או 'b' עוברים טרנספורמציה או צמודה.
הפרמטר 'סוג' מציין את סוג רכיבי המטריצה. גם `a` וגם `b` חייבים להיות בעלי אותו סוג. הסוגים הנתמכים הם: `float32`, `float64`, `complex64` ו-`complex128`.
גם `a` וגם `b` חייבים להיות בעלי אותה דרגה. השידור אינו נתמך. אם יש להם דרגה 3, כל אצווה של CSRSparseMatrices דו-ממדיים בתוך `a` ו-`b` חייבת להיות בעלת אותה צורה צפופה.
למוצר המטריצה הדליל עשוי להיות אפסים מספריים (לא מבניים). TODO(anudhyan): שקול להוסיף תכונה בוליאנית כדי לקבוע אם לגזום אפסים.
דוגמה לשימוש:
from tensorflow.python.ops.linalg.sparse import sparse_csr_matrix_ops
a_indices = np.array([[0, 0], [2, 3], [2, 4], [3, 0]])
a_values = np.array([1.0, 5.0, -1.0, -2.0], np.float32)
a_dense_shape = [4, 5]
b_indices = np.array([[0, 0], [3, 0], [3, 1]])
b_values = np.array([2.0, 7.0, 8.0], np.float32)
b_dense_shape = [5, 3]
with tf.Session() as sess:
# Define (COO format) Sparse Tensors over Numpy arrays
a_st = tf.sparse.SparseTensor(a_indices, a_values, a_dense_shape)
b_st = tf.sparse.SparseTensor(b_indices, b_values, b_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)
b_sm = sparse_csr_matrix_ops.sparse_tensor_to_csr_sparse_matrix(
b_st.indices, b_st.values, b_st.dense_shape)
# Compute the CSR SparseMatrix matrix multiplication
c_sm = sparse_csr_matrix_ops.sparse_matrix_sparse_mat_mul(
a=a_sm, b=b_sm, type=tf.float32)
# Convert the CSR SparseMatrix product to a dense Tensor
c_sm_dense = sparse_csr_matrix_ops.csr_sparse_matrix_to_dense(
c_sm, tf.float32)
# Evaluate the dense Tensor value
c_sm_dense_value = sess.run(c_sm_dense)
[[ 2. 0. 0.]
[ 0. 0. 0.]
[ 35. 40. 0.]
[ -4. 0. 0.]]
כיתות מקוננות
מַחלָקָה | SparseMatrixSparseMatMul.Options | תכונות אופציונליות עבור SparseMatrixSparseMatMul |
קבועים
חוּט | OP_NAME | השם של המבצע הזה, כפי שידוע על ידי מנוע הליבה של TensorFlow |
שיטות ציבוריות
סטטי SparseMatrixSparseMatMul.Options | adjointA (AdjointA בוליאני) |
סטטי SparseMatrixSparseMatMul.Options | adjointB (AdjointB בוליאני) |
פלט < TType > | asOutput () מחזירה את הידית הסמלית של הטנזור. |
פלט <?> | ג () CSRSparseMatrix. |
static <T מרחיב את TType > SparseMatrixSparseMatMul | צור ( היקף היקף , Operand <?> a, Operand <?> b, סוג Class<T>, אפשרויות... אפשרויות) שיטת מפעל ליצירת מחלקה העוטפת פעולת SparseMatrixSparseMatMul חדשה. |
סטטי SparseMatrixSparseMatMul.Options | transposeA (טרנספוזי בוליאני) |
סטטי SparseMatrixSparseMatMul.Options | transposeB (טרנספוזי בוליאני) |
שיטות בירושה
קבועים
מחרוזת סופית סטטית ציבורית OP_NAME
השם של המבצע הזה, כפי שידוע על ידי מנוע הליבה של TensorFlow
שיטות ציבוריות
סטטי ציבורי SparseMatrixSparseMatMul.Options adjointA (AdjointA בוליאני)
פרמטרים
adjointA | מציין אם יש לבצע טרנספוזיציה של 'a'. |
---|
סטטי ציבורי SparseMatrixSparseMatMul.Options adjointB (AdjointB בוליאני)
פרמטרים
צמוד ב | מציין אם יש לבצע טרנספוזיציה של 'b'. |
---|
פלט ציבורי < TType > asOutput ()
מחזירה את הידית הסמלית של הטנזור.
כניסות לפעולות TensorFlow הן יציאות של פעולת TensorFlow אחרת. שיטה זו משמשת להשגת ידית סמלית המייצגת את חישוב הקלט.
ציבורי סטטי SparseMatrixSparseMatMul ליצור (היקף היקף , Operand <?> a, Operand <?> b, סוג Class<T>, אפשרויות... אפשרויות)
שיטת מפעל ליצירת מחלקה העוטפת פעולת SparseMatrixSparseMatMul חדשה.
פרמטרים
תְחוּם | ההיקף הנוכחי |
---|---|
א | CSRSparseMatrix. |
ב | CSRSparseMatrix. |
אפשרויות | נושא ערכי תכונות אופציונליות |
מחזיר
- מופע חדש של SparseMatrixSparseMatMul
סטטי ציבורי SparseMatrixSparseMatMul.Options transposeA (בוליאני transposeA)
פרמטרים
transposeA | מציין אם יש להעביר 'a'. |
---|
סטטי ציבורי SparseMatrixSparseMatMul.Options transposeB (טרנספוזי בוליאניB)
פרמטרים
transposeB | מציין אם יש להעביר את 'b'. |
---|