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