Sparse-matrix-menggandakan dua matriks CSR `a` dan `b`.
Melakukan perkalian matriks dari matriks jarang `a` dengan matriks jarang `b`; mengembalikan matriks sparse `a * b`, kecuali jika `a` atau `b` ditransposisikan atau digabungkan.
Setiap matriks dapat ditransposisikan atau digabungkan (terkonjugasi dan ditransposisikan) sesuai dengan parameter Boolean `transpose_a`, `adjoint_a`, `transpose_b` dan `adjoint_b`. Paling banyak satu dari `transpose_a` atau `adjoint_a` mungkin Benar. Demikian pula, paling banyak salah satu dari `transpose_b` atau `adjoint_b` mungkin Benar.
Input harus memiliki bentuk yang kompatibel. Artinya, dimensi dalam `a` harus sama dengan dimensi luar `b`. Persyaratan ini disesuaikan menurut apakah `a` atau `b` dialihkan atau digabungkan.
Parameter `type` menunjukkan jenis elemen matriks. Baik `a` dan `b` harus memiliki tipe yang sama. Jenis yang didukung adalah: `float32`, `float64`, `complex64` dan `complex128`.
Baik `a` dan `b` harus memiliki peringkat yang sama. Penyiaran tidak didukung. Jika mereka memiliki peringkat 3, setiap batch 2D CSRSparseMatrices dalam `a` dan `b` harus memiliki bentuk padat yang sama.
Produk matriks jarang mungkin memiliki angka nol (non-struktural). TODO(anudhyan): Pertimbangkan untuk menambahkan atribut boolean untuk mengontrol apakah akan memangkas nol.
Contoh penggunaan:
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)
`toko c_sm_dense_value` produk matriks padat: [[ 2. 0. 0.]
[ 0. 0. 0.]
[ 35. 40. 0.]
[ -4. 0. 0.]]
a: A` CSRSparseMatrix`. b: `CSRSparseMatrix` dengan tipe dan peringkat yang sama dengan `a`. type: Jenis `a` dan `b`. transpose_a: Jika Benar, `a` ditransposisikan sebelum perkalian. transpose_b: Jika Benar, `b` ditransposisikan sebelum perkalian. adjoint_a: Jika Benar, `a` disatukan sebelum perkalian. adjoint_b: Jika Benar, `b` disatukan sebelum perkalian. Kelas Bersarang
kelas | SparseMatrixSparseMatMul.Options | Atribut opsional untuk SparseMatrixSparseMatMul |
Metode Publik
statis SparseMatrixSparseMatMul.Options | adjointA (Boolean adjointA) |
statis SparseMatrixSparseMatMul.Options | adjointB (Boolean adjointB) |
Output <Object> | asOutput () Mengembalikan pegangan simbolis tensor. |
Output <?> | c () Sebuah CSRSparseMatrix. |
statis <T> SparseMatrixSparseMatMul | membuat ( Lingkup lingkup, Operan <?> a, Operan <?> b, Kelas <T> jenis, Options ... pilihan) Metode pabrik untuk membuat kelas yang membungkus operasi SparseMatrixSparseMatMul baru. |
statis SparseMatrixSparseMatMul.Options | transposeA (Boolean transposeA) |
statis SparseMatrixSparseMatMul.Options | transposeB (Boolean transposeB) |
Metode yang Diwarisi
Metode Publik
public static SparseMatrixSparseMatMul.Options adjointA (Boolean adjointA)
Parameter
adjointA | Menunjukkan apakah `a` harus ditransposisikan konjugasi. |
---|
public static SparseMatrixSparseMatMul.Options adjointB (Boolean adjointB)
Parameter
adjointB | Menunjukkan apakah `b` harus ditransposisikan konjugasi. |
---|
publik Keluaran <Object> asOutput ()
Mengembalikan pegangan simbolis tensor.
Input ke operasi TensorFlow adalah output dari operasi TensorFlow lainnya. Metode ini digunakan untuk mendapatkan pegangan simbolis yang mewakili perhitungan input.
public static SparseMatrixSparseMatMul membuat ( Scope lingkup, Operan <?> a, Operan <?> b, Kelas <T> jenis, Options ... pilihan)
Metode pabrik untuk membuat kelas yang membungkus operasi SparseMatrixSparseMatMul baru.
Parameter
cakupan | lingkup saat ini |
---|---|
A | Sebuah CSRSparseMatrix. |
B | Sebuah CSRSparseMatrix. |
pilihan | membawa nilai atribut opsional |
Kembali
- contoh baru dari SparseMatrixSparseMatMul
public static SparseMatrixSparseMatMul.Options transposeA (Boolean transposeA)
Parameter
transposA | Menunjukkan apakah `a` harus dialihkan. |
---|
public static SparseMatrixSparseMatMul.Options transposeB (Boolean transposeB)
Parameter
transposB | Menunjukkan apakah `b` harus dialihkan. |
---|