Sparse-matrix-دو ماتریس CSR 'a' و 'b' را ضرب می کند.
ضرب ماتریس یک ماتریس پراکنده 'a' را با ماتریس پراکنده 'b' انجام می دهد. یک ماتریس پراکنده «a * b» را برمیگرداند، مگر اینکه «a» یا «b» جابهجایی یا الحاق شده باشند.
هر ماتریس ممکن است با توجه به پارامترهای بولی «transpose_a»، «adjoint_a»، «transpose_b» و «adjoint_b» جابهجا یا به هم متصل شود (مزوج و جابهجا شود). حداکثر یکی از «transpose_a» یا «adjoint_a» ممکن است True باشد. به طور مشابه، حداکثر یکی از «transpose_b» یا «adjoint_b» ممکن است True باشد.
ورودی ها باید دارای اشکال سازگار باشند. یعنی بعد درونی «الف» باید برابر با بعد بیرونی «ب» باشد. این شرط با توجه به اینکه «a» یا «b» جابهجا شده باشد یا الحاق شده تنظیم میشود.
پارامتر "type" نوع عناصر ماتریس را نشان می دهد. هر دو «a» و «b» باید یک نوع داشته باشند. انواع پشتیبانی شده عبارتند از: «float32»، «float64»، «complex64» و «complex128».
هر دو «a» و «b» باید دارای رتبه یکسانی باشند. پخش پشتیبانی نمی شود. اگر رتبه 3 دارند، هر دسته از ماتریس های 2 بعدی CSRSparse در «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`. b: یک «CSRSparseMatrix» با همان نوع و رتبه «a». نوع: نوع «a» و «b». transpose_a: اگر True باشد، «a» قبل از ضرب جابهجا میشود. transpose_b: اگر True باشد، «b» قبل از ضرب جابهجا میشود. adjoint_a: اگر True باشد، "a" قبل از ضرب الحاق می شود. adjoint_b: اگر True باشد، «b» قبل از ضرب الحاق می شود. کلاس های تو در تو
کلاس | SparseMatrixSparseMatMul.Options | ویژگی اختیاری برای SparseMatrixSparseMatMul |
روش های عمومی
شخص SparseMatrixSparseMatMul.Options | adjointA (بولی adjointA) |
شخص SparseMatrixSparseMatMul.Options | adjointB (بولی adjointB) |
خروجی <شی> | asOutput () دسته نمادین یک تانسور را برمیگرداند. |
خروجی <؟> | ج () یک CSRSparseMatrix. |
شخص <T> SparseMatrixSparseMatMul | ایجاد ( محدوده دامنه، عملوند <؟> یک عملوند <؟> B، کلاس <T> نوع، گزینه ها ... گزینه ها) روش کارخانه برای ایجاد کلاسی که یک عملیات جدید SparseMatrixSparseMatMul را بسته بندی می کند. |
شخص SparseMatrixSparseMatMul.Options | transposeA (بولی transposeA) |
شخص SparseMatrixSparseMatMul.Options | transposeB (بولی transposeB) |
روش های ارثی
روش های عمومی
عمومی استاتیک SparseMatrixSparseMatMul.Options adjointA (بولی adjointA)
مولفه های
adjointA | نشان می دهد که آیا «a» باید به صورت مزدوج منتقل شود یا خیر. |
---|
عمومی استاتیک SparseMatrixSparseMatMul.Options adjointB (بولی adjointB)
مولفه های
adjointB | نشان می دهد که آیا «b» باید به صورت مزدوج منتقل شود یا خیر. |
---|
عمومی خروجی <شی> asOutput ()
دسته نمادین یک تانسور را برمیگرداند.
ورودی های عملیات TensorFlow خروجی های عملیات تنسورفلو دیگر هستند. این روش برای به دست آوردن یک دسته نمادین که نشان دهنده محاسبه ورودی است استفاده می شود.
عمومی استاتیک SparseMatrixSparseMatMul ایجاد ( محدوده دامنه، عملوند <؟> یک عملوند <؟> B، کلاس <T> نوع، گزینه ها ... گزینه ها)
روش کارخانه برای ایجاد کلاسی که یک عملیات جدید SparseMatrixSparseMatMul را بسته بندی می کند.
مولفه های
محدوده | محدوده فعلی |
---|---|
آ | یک CSRSparseMatrix. |
ب | یک CSRSparseMatrix. |
گزینه ها | مقادیر ویژگی های اختیاری را حمل می کند |
برمی گرداند
- یک نمونه جدید از SparseMatrixSparseMatMul
عمومی استاتیک SparseMatrixSparseMatMul.Options transposeA (بولی transposeA)
مولفه های
انتقال A | نشان می دهد که «a» باید جابه جا شود یا خیر. |
---|
عمومی استاتیک SparseMatrixSparseMatMul.Options transposeB (بولی transposeB)
مولفه های
transposeB | نشان میدهد که «b» باید جابهجا شود یا خیر. |
---|