SparseMatrixSparseMatMul

כיתת גמר ציבורית SparseMatrixSparseMatMul

מטריצה ​​דלילה-מכפילה שתי מטריצות 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)
 
`c_sm_dense_value` מאחסן את תוצר המטריצה ​​הצפופה:
[[  2.   0.   0.]
      [  0.   0.   0.]
      [ 35.  40.   0.]
      [ -4.   0.   0.]]
 
a: `CSRSparseMatrix`. ב: `CSRSparseMatrix` עם אותו סוג ודירוג כמו `a`. סוג: הסוג של 'a' וגם של 'b'. transpose_a: אם נכון, 'a' הועבר לפני הכפל. transpose_b: אם נכון, 'b' הועבר לפני הכפל. adjoint_a: אם נכון, `a` צמוד לפני הכפל. adjoint_b: אם נכון, 'b' צמוד לפני הכפל.

כיתות מקוננות

מעמד SparseMatrixSparseMatMul.Options תכונות אופציונליות עבור SparseMatrixSparseMatMul

שיטות ציבוריות

סטטי SparseMatrixSparseMatMul.Options
adjointA (AdjointA בוליאני)
סטטי SparseMatrixSparseMatMul.Options
adjointB (AdjointB בוליאני)
פלט <Object>
asOutput ()
מחזירה את הידית הסמלית של טנזור.
פלט <?>
ג ()
CSRSparseMatrix.
סטטי <T> SparseMatrixSparseMatMul
ליצור ( היקף היקף, אופרנד <?> a, אופרנד <?> b, סוג מחלקה<T>, אפשרויות... אפשרויות)
שיטת מפעל ליצירת מחלקה העוטפת פעולת SparseMatrixSparseMatMul חדשה.
סטטי SparseMatrixSparseMatMul.Options
transposeA (בוליאני transposeA)
סטטי SparseMatrixSparseMatMul.Options
transposeB (טרנספוזי בוליאני)

שיטות בירושה

שיטות ציבוריות

סטטי ציבורי SparseMatrixSparseMatMul.Options adjointA (AdjointA בוליאני)

פרמטרים
adjointA מציין אם יש לבצע טרנספוזיציה של 'a'.

סטטי ציבורי SparseMatrixSparseMatMul.Options adjointB (AdjointB בוליאני)

פרמטרים
צמוד ב מציין אם יש לבצע טרנספוזיציה של 'b'.

פלט ציבורי <Object> asOutput ()

מחזירה את הידית הסמלית של טנזור.

כניסות לפעולות TensorFlow הן יציאות של פעולת TensorFlow אחרת. שיטה זו משמשת להשגת ידית סמלית המייצגת את חישוב הקלט.

פלט ציבורי <?> c ()

CSRSparseMatrix.

ציבורי סטטי SparseMatrixSparseMatMul ליצור ( היקף היקף , Operand <?> a, Operand <?> b, סוג Class<T>, אפשרויות... אפשרויות)

שיטת מפעל ליצירת מחלקה העוטפת פעולת SparseMatrixSparseMatMul חדשה.

פרמטרים
תְחוּם ההיקף הנוכחי
א CSRSparseMatrix.
ב CSRSparseMatrix.
אפשרויות נושא ערכי תכונות אופציונליות
החזרות
  • מופע חדש של SparseMatrixSparseMatMul

סטטי ציבורי SparseMatrixSparseMatMul.Options transposeA (בוליאני transposeA)

פרמטרים
transposeA מציין אם יש להעביר 'a'.

סטטי ציבורי SparseMatrixSparseMatMul.Options transposeB (טרנספוזי בוליאניB)

פרמטרים
transposeB מציין אם יש להעביר את 'b'.