La matrice sparsa moltiplica due matrici CSR "a" e "b".
Esegue una moltiplicazione di matrici di una matrice sparsa "a" con una matrice sparsa "b"; restituisce una matrice sparsa `a * b`, a meno che `a` o `b` non siano trasposti o aggiunti.
Ciascuna matrice può essere trasposta o aggiunta (coniugata e trasposta) secondo i parametri booleani `transpose_a`, `adjoint_a`, `transpose_b` e `adjoint_b`. Al massimo uno tra "transpose_a" o "adjoint_a" può essere True. Allo stesso modo, al massimo uno tra "transpose_b" o "adjoint_b" può essere True.
Gli input devono avere forme compatibili. Cioè, la dimensione interna di "a" deve essere uguale alla dimensione esterna di "b". Questo requisito viene adeguato a seconda che "a" o "b" siano trasposti o aggiunti.
Il parametro "tipo" denota il tipo degli elementi della matrice. Sia "a" che "b" devono avere lo stesso tipo. I tipi supportati sono: `float32`, `float64`, `complex64` e `complex128`.
Sia "a" che "b" devono avere lo stesso rango. La trasmissione non è supportata. Se hanno rango 3, ogni batch di CSRSparseMatrices 2D all'interno di "a" e "b" deve avere la stessa forma densa.
Il prodotto della matrice sparsa può avere zeri numerici (non strutturali). TODO(anudhyan): valuta la possibilità di aggiungere un attributo booleano per controllare se eliminare gli zeri.
Esempio di utilizzo:
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` memorizza il prodotto della matrice densa: [[ 2. 0. 0.]
[ 0. 0. 0.]
[ 35. 40. 0.]
[ -4. 0. 0.]]
a: Una `CSRSparseMatrix`. b: Un "CSRSparseMatrix" con lo stesso tipo e rango di "a". tipo: il tipo di "a" e "b". transpose_a: Se Vero, `a` trasposto prima della moltiplicazione. transpose_b: Se Vero, `b` trasposto prima della moltiplicazione. adjoint_a: se Vero, `a` aggiunto prima della moltiplicazione. adjoint_b: Se Vero, `b` aggiunto prima della moltiplicazione. Classi nidificate
classe | SparseMatrixSparseMatMul.Options | Attributi facoltativi per SparseMatrixSparseMatMul |
Metodi pubblici
statico SparseMatrixSparseMatMul.Options | aggiuntoA (aggiunto booleanoA) |
statico SparseMatrixSparseMatMul.Options | aggiuntoB (aggiuntoB booleano) |
Uscita <Oggetto> | comeuscita () Restituisce la maniglia simbolica di un tensore. |
Uscita <?> | C () Una CSRSparseMatrix. |
statico <T> SparseMatrixSparseMatMul | create ( ambito ambito , operando <?> a, operando <?> b, tipo classe<T>, opzioni... opzioni) Metodo factory per creare una classe che racchiude una nuova operazione SparseMatrixSparseMatMul. |
statico SparseMatrixSparseMatMul.Options | trasposizioneA (trasposizione booleana) |
statico SparseMatrixSparseMatMul.Options | transposeB (trasposizione booleana B) |
Metodi ereditati
Metodi pubblici
public static SparseMatrixSparseMatMul.Options adjointA (Boolean adjointA)
Parametri
aggiuntoA | Indica se "a" deve essere trasposto in forma coniugata. |
---|
public static SparseMatrixSparseMatMul.Options adjointB (booleano adjointB)
Parametri
aggiunto B | Indica se "b" deve essere trasposto coniugato. |
---|
output pubblico <Oggetto> asOutput ()
Restituisce la maniglia simbolica di un tensore.
Gli input per le operazioni TensorFlow sono output di un'altra operazione TensorFlow. Questo metodo viene utilizzato per ottenere un handle simbolico che rappresenta il calcolo dell'input.
public static SparseMatrixSparseMatMul create ( ambito ambito , operando <?> a, operando <?> b, tipo classe <T>, opzioni... opzioni)
Metodo factory per creare una classe che racchiude una nuova operazione SparseMatrixSparseMatMul.
Parametri
portata | ambito attuale |
---|---|
UN | Una CSRSparseMatrix. |
B | Una CSRSparseMatrix. |
opzioni | trasporta valori di attributi opzionali |
Ritorni
- una nuova istanza di SparseMatrixSparseMatMul
public static SparseMatrixSparseMatMul.Options transposeA (transposeA booleana)
Parametri
trasporreA | Indica se "a" deve essere trasposto. |
---|
public static SparseMatrixSparseMatMul.Options transposeB (transposeB booleano)
Parametri
trasporre B | Indica se "b" deve essere trasposto. |
---|