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.]]
الف: یک «CSRSparseMatrix». b: یک «CSRSparseMatrix» با همان نوع و رتبه «a». type: نوع «a» و «b». transpose_a: اگر True باشد، «a» قبل از ضرب جابهجا میشود. transpose_b: اگر True باشد، «b» قبل از ضرب جابهجا میشود. adjoint_a: اگر True باشد، "a" قبل از ضرب الحاق می شود. adjoint_b: اگر True باشد، «b» قبل از ضرب الحاق می شود. کلاس های تو در تو
کلاس | SparseMatrixSparseMatMul.Options | ویژگی های اختیاری برای SparseMatrixSparseMatMul |
روش های عمومی
استاتیک SparseMatrixSparseMatMul.Options | adjointA (Boolean adjointA) |
استاتیک SparseMatrixSparseMatMul.Options | adjointB (Boolean adjointB) |
خروجی <Object> | asOutput () دسته نمادین یک تانسور را برمیگرداند. |
خروجی <?> | ج () یک CSRSparseMatrix. |
استاتیک <T> SparseMatrixSparseMatMul | ایجاد ( دامنه دامنه ، عملوند <?> a، عملوند <?> b، نوع کلاس<T>، گزینهها... گزینهها) روش کارخانه برای ایجاد کلاسی که یک عملیات جدید SparseMatrixSparseMatMul را بسته بندی می کند. |
استاتیک SparseMatrixSparseMatMul.Options | transposeA (transposeA Boolean) |
استاتیک SparseMatrixSparseMatMul.Options | transposeB (transposeB) |
روش های ارثی
روش های عمومی
عمومی استاتیک SparseMatrixSparseMatMul.Options adjointA (Boolean adjointA)
پارامترها
adjointA | نشان می دهد که آیا «a» باید به صورت مزدوج منتقل شود یا خیر. |
---|
عمومی استاتیک SparseMatrixSparseMatMul.Options adjointB (Boolean adjointB)
پارامترها
adjointB | نشان می دهد که آیا «b» باید به صورت مزدوج منتقل شود یا خیر. |
---|
خروجی عمومی <Object> asOutput ()
دسته نمادین یک تانسور را برمیگرداند.
ورودی های عملیات TensorFlow خروجی های عملیات تنسورفلو دیگر هستند. این روش برای به دست آوردن یک دسته نمادین که نشان دهنده محاسبه ورودی است استفاده می شود.
ایجاد عمومی ثابت SparseMatrixSparseMatMul ( دامنه دامنه ، عملوند <?> a، عملوند <?> b، نوع کلاس<T>، گزینهها... گزینهها)
روش کارخانه برای ایجاد کلاسی که یک عملیات جدید SparseMatrixSparseMatMul را بسته بندی می کند.
پارامترها
دامنه | محدوده فعلی |
---|---|
الف | یک CSRSparseMatrix. |
ب | یک CSRSparseMatrix. |
گزینه ها | مقادیر ویژگی های اختیاری را حمل می کند |
برمی گرداند
- یک نمونه جدید از SparseMatrixSparseMatMul
عمومی استاتیک SparseMatrixSparseMatMul.Options transposeA (transposeA Boolean)
پارامترها
انتقال A | نشان می دهد که آیا «a» باید جابجا شود یا خیر. |
---|
عمومی استاتیک SparseMatrixSparseMatMul.Options transposeB (transposeB)
پارامترها
transposeB | نشان میدهد که «b» باید جابهجا شود یا خیر. |
---|