تقوم المصفوفة المتفرقة بضرب مصفوفتين للمسؤولية الاجتماعية للشركات `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` منقولًا أو مجاورًا.
تشير المعلمة "type" إلى نوع عناصر المصفوفة. يجب أن يكون لكل من `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_b: إذا كان صحيحا، `b` مجاورة قبل الضرب. فئات متداخلة
فصل | SparseMatrixSparseMatMul.Options | السمات الاختيارية لـ SparseMatrixSparseMatMul |
الأساليب العامة
static SparseMatrixSparseMatMul.Options | المجاورة أ (المجاورة المنطقية أ) |
static SparseMatrixSparseMatMul.Options | المجاور B (المجاور المنطقي B) |
الإخراج <كائن> | كإخراج () إرجاع المقبض الرمزي للموتر. |
الإخراج <؟> | ج () CSRSparseMatrix. |
ثابت <T> SparseMatrixSparseMatMul | |
static SparseMatrixSparseMatMul.Options | النقل A (التحويل المنطقي A) |
static SparseMatrixSparseMatMul.Options | النقل B (التحويل المنطقي B) |
الطرق الموروثة
الأساليب العامة
ساكن عام SparseMatrixSparseMatMul.Options adjointA (منطقي adjointA)
حدود
مجاورأ | يشير إلى ما إذا كان ينبغي نقل `a` بشكل مترافق. |
---|
ساكن عام SparseMatrixSparseMatMul.Options adjointB (منطقي adjointB)
حدود
مجاور ب | يشير إلى ما إذا كان ينبغي نقل `b` بشكل مترافق. |
---|
الإخراج العام <Object> asOutput ()
إرجاع المقبض الرمزي للموتر.
المدخلات إلى عمليات TensorFlow هي مخرجات عملية TensorFlow أخرى. يتم استخدام هذه الطريقة للحصول على مقبض رمزي يمثل حساب الإدخال.
إنشاء SparseMatrixSparseMatMul ثابت عام (نطاق النطاق ، المعامل <?> a، المعامل <?> b، النوع <T>، الخيارات... خيارات)
طريقة المصنع لإنشاء فئة تغلف عملية SparseMatrixSparseMatMul جديدة.
حدود
نِطَاق | النطاق الحالي |
---|---|
أ | CSRSparseMatrix. |
ب | CSRSparseMatrix. |
خيارات | يحمل قيم السمات الاختيارية |
المرتجعات
- مثيل جديد من SparseMatrixSparseMatMul
ثابت عام SparseMatrixSparseMatMul.Options transposeA (تحويل منطقي A)
حدود
تبديل أ | يشير إلى ما إذا كان ينبغي نقل `a`. |
---|
ثابت عام SparseMatrixSparseMatMul.Options transposeB (تحويل منطقيB)
حدود
تبديل ب | يشير إلى ما إذا كان ينبغي نقل `b`. |
---|