Matriks renggang-mengalikan dua matriks CSR `a` dan `b`.
Melakukan perkalian matriks dari matriks renggang `a` dengan matriks renggang `b`; mengembalikan matriks renggang `a * b`, kecuali `a` atau `b` dialihkan atau disatukan.
Setiap matriks dapat ditransposisi atau disatukan (terkonjugasi dan ditransposisikan) sesuai dengan parameter Boolean `transpose_a`, `adjoint_a`, `transpose_b` dan `adjoint_b`. Paling banyak salah satu dari `transpose_a` atau `adjoint_a` mungkin Benar. Demikian pula, paling banyak salah satu dari `transpose_b` atau `adjoint_b` mungkin Benar.
Masukan harus memiliki bentuk yang kompatibel. Artinya, dimensi dalam `a` harus sama dengan dimensi luar `b`. Persyaratan ini disesuaikan berdasarkan apakah `a` atau `b` dialihkan atau disatukan.
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 memiliki peringkat 3, setiap batch CSRSparseMatrices 2D dalam `a` dan `b` harus memiliki bentuk padat yang sama.
Produk matriks renggang mungkin memiliki angka nol (non-struktural). TODO(anudhyan): Pertimbangkan untuk menambahkan atribut boolean untuk mengontrol apakah akan memangkas angka 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)
`c_sm_dense_value` menyimpan produk matriks padat: [[ 2. 0. 0.]
[ 0. 0. 0.]
[ 35. 40. 0.]
[ -4. 0. 0.]]
a: `CSRSparseMatrix`. b: `CSRSparseMatrix` dengan tipe dan peringkat yang sama dengan `a`. type: Jenis `a` dan `b`. transpose_a: Jika Benar, `a` dialihkan sebelum perkalian. transpose_b: Jika Benar, `b` dialihkan sebelum perkalian. adjoint_a: Jika Benar, `a` disambungkan sebelum perkalian. adjoint_b: Jika Benar, `b` disambung sebelum perkalian. Kelas Bersarang
kelas | SparseMatrixSparseMatMul.Options | Atribut opsional untuk SparseMatrixSparseMatMul |
Metode Publik
SparseMatrixSparseMatMul.Options statis | adjointA (Boolean adjointA) |
SparseMatrixSparseMatMul.Options statis | adjointB (Boolean adjointB) |
Keluaran <Objek> | sebagai Keluaran () Mengembalikan pegangan simbolik tensor. |
Keluaran <?> | C () Sebuah CSRSparseMatrix. |
statis <T> SparseMatrixSparseMatMul | |
SparseMatrixSparseMatMul.Options statis | transposeA (Boolean transposeA) |
SparseMatrixSparseMatMul.Options statis | transposeB (Boolean transposeB) |
Metode Warisan
Metode Publik
SparseMatrixSparseMatMul.Options adjointA statis publik (Boolean adjointA)
Parameter
berdampinganA | Menunjukkan apakah `a` harus ditransposisikan secara konjugasi. |
---|
SparseMatrixSparseMatMul.Options adjointB statis publik (Boolean adjointB)
Parameter
berdampinganB | Menunjukkan apakah `b` harus ditransposisikan secara konjugasi. |
---|
Output publik <Objek> asOutput ()
Mengembalikan pegangan simbolik tensor.
Masukan ke operasi TensorFlow adalah keluaran dari operasi TensorFlow lainnya. Metode ini digunakan untuk mendapatkan pegangan simbolis yang mewakili perhitungan input.
public static SparseMatrixSparseMatMul buat ( Lingkup lingkup, Operan <?> a, Operan <?> b, Tipe Kelas<T>, Opsi... opsi)
Metode pabrik untuk membuat kelas yang membungkus operasi SparseMatrixSparseMatMul baru.
Parameter
cakupan | ruang lingkup saat ini |
---|---|
A | Sebuah CSRSparseMatrix. |
B | Sebuah CSRSparseMatrix. |
pilihan | membawa nilai atribut opsional |
Kembali
- contoh baru dari SparseMatrixSparseMatMul
SparseMatrixSparseMatMul.Options transposeA statis publik (Boolean transposeA)
Parameter
mengubah urutanA | Menunjukkan apakah `a` harus dialihkan. |
---|
SparseMatrixSparseMatMul.Options transposeB statis publik (Boolean transposeB)
Parameter
mengubah urutanB | Menunjukkan apakah `b` harus dialihkan. |
---|