Rzadka macierz – mnoży dwie macierze CSR „a” i „b”.
Wykonuje mnożenie macierzy rzadkiej macierzy „a” przez rzadką macierz „b”; zwraca rzadką macierz `a * b`, chyba że `a` lub `b` jest transponowane lub sprzężone.
Każda macierz może być transponowana lub sprzężona (sprzężona i transponowana) zgodnie z parametrami boolowskimi `transpose_a`, `adjoint_a`, `transpose_b` i `adjoint_b`. Co najwyżej jedno z „transpose_a” lub „adjoint_a” może mieć wartość True. Podobnie, co najwyżej jedno z `transpose_b` lub `adjoint_b` może mieć wartość True.
Dane wejściowe muszą mieć kompatybilne kształty. Oznacza to, że wewnętrzny wymiar „a” musi być równy zewnętrznemu wymiarowi „b”. Wymóg ten dostosowuje się w zależności od tego, czy „a” czy „b” jest transponowane czy połączone.
Parametr `type` określa typ elementów macierzy. Zarówno „a”, jak i „b” muszą być tego samego typu. Obsługiwane typy to: `float32`, `float64`, `complex64` i `complex128`.
Zarówno „a”, jak i „b” muszą mieć tę samą rangę. Nadawanie nie jest obsługiwane. Jeśli mają rangę 3, każda partia 2D CSRSparseMatrices w obrębie „a” i „b” musi mieć ten sam gęsty kształt.
Iloczyn macierzy rzadkiej może mieć zera numeryczne (niestrukturalne). DO ZROBIENIA(anudhyan): Rozważ dodanie atrybutu logicznego, aby kontrolować, czy usuwać zera.
Przykład użycia:
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` przechowuje iloczyn gęstej macierzy: [[ 2. 0. 0.]
[ 0. 0. 0.]
[ 35. 40. 0.]
[ -4. 0. 0.]]
a: `CSRSparseMatrix`. b: A `CSRSparseMatrix` o tym samym typie i randze co `a`. typ: typ zarówno „a”, jak i „b”. transpose_a: Jeśli prawda, `a` transponowane przed mnożeniem. transpose_b: Jeśli prawda, `b` transponowane przed mnożeniem. adjoint_a: Jeśli prawda, „a” połączone przed mnożeniem. adjoint_b: Jeśli to prawda, „b” jest połączone przed mnożeniem. Klasy zagnieżdżone
klasa | SparseMatrixSparseMatMul.Opcje | Opcjonalne atrybuty dla SparseMatrixSparseMatMul |
Stałe
Smyczkowy | OP_NAME | Nazwa tej operacji znana silnikowi rdzenia TensorFlow |
Metody publiczne
statyczny SparseMatrixSparseMatMul.Options | sprzężenie A (dołączenie logiczne A) |
statyczny SparseMatrixSparseMatMul.Options | sprzężenie B (dołączenie logiczne B) |
Wyjście < Typ T > | jako wyjście () Zwraca symboliczny uchwyt tensora. |
Wyjście <?> | C () CSRSparseMatrix. |
statyczny <T rozszerza TType > SparseMatrixSparseMatMul | |
statyczny SparseMatrixSparseMatMul.Options | transpozycjaA (logiczna transpozycjaA) |
statyczny SparseMatrixSparseMatMul.Options | transpozycja B (logiczna transpozycja B) |
Metody dziedziczone
Stałe
publiczny statyczny końcowy ciąg znaków OP_NAME
Nazwa tej operacji znana silnikowi rdzenia TensorFlow
Metody publiczne
public static SparseMatrixSparseMatMul.Options dodatek A (boolean dodatek A)
Parametry
przylegającyA | Wskazuje, czy „a” powinno być transponowane przez koniugat. |
---|
public static SparseMatrixSparseMatMul.Options sprzężenie B (dołączenie logiczne B)
Parametry
przylegającyB | Wskazuje, czy „b” powinno być transponowane przez koniugat. |
---|
publiczne wyjście < TType > asOutput ()
Zwraca symboliczny uchwyt tensora.
Dane wejściowe operacji TensorFlow są wynikami innej operacji TensorFlow. Ta metoda służy do uzyskania symbolicznego uchwytu reprezentującego obliczenia danych wejściowych.
public static SparseMatrixSparseMatMul create ( Zakres zasięgu, Operand <?> a, Operand <?> b, Typ Class<T>, Opcje... opcje)
Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację SparseMatrixSparseMatMul.
Parametry
zakres | aktualny zakres |
---|---|
A | CSRSparseMatrix. |
B | CSRSparseMatrix. |
opcje | przenosi opcjonalne wartości atrybutów |
Powroty
- nowa instancja SparseMatrixSparseMatMul
public static SparseMatrixSparseMatMul.Options transposeA (boolean transposeA)
Parametry
transponowaćA | Wskazuje, czy należy transponować „a”. |
---|
public static SparseMatrixSparseMatMul.Options transpozycja B (transpozycja logiczna B)
Parametry
transponowaćB | Wskazuje, czy należy transponować „b”. |
---|