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.]]
 
א: `CSRSparseMatrix`. ב: `CSRSparseMatrix` עם אותו סוג ודירוג כמו `a`. סוג: הסוג של 'a' וגם של 'b'. transpose_a: אם נכון, 'a' הועבר לפני הכפל. transpose_b: אם נכון, 'b' הועבר לפני הכפל. adjoint_a: אם נכון, `a` צמוד לפני הכפל. adjoint_b: אם נכון, 'b' צמוד לפני הכפל.

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

מַחלָקָה 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"

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

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

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

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

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

פלט ציבורי < TType > 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'.