SparseMatrixSparseMatMul

パブリック最終クラスSparseMatrixSparseMatMul

スパース行列は、2 つの CSR 行列「a」と「b」を乗算します。

スパース行列 'a' とスパース行列 'b' の行列乗算を実行します。 'a' または 'b' が転置または隣接していない限り、スパース行列 'a * b' を返します。

各行列は、ブールパラメータ「transpose_a」、「adjoint_a」、「transpose_b」、および「adjoint_b」に従って転置または随伴(共役および転置)できます。 `transpose_a` または `adjoint_a` の最大でも 1 つが True になります。同様に、`transpose_b` または `adjoint_b` の最大 1 つが True になる可能性があります。

入力は互換性のある形状を持っている必要があります。つまり、「a」の内側の寸法は「b」の外側の寸法と等しくなければなりません。この要件は、「a」または「b」のいずれかが転置されるか隣接されるかに応じて調整されます。

「type」パラメータは行列要素のタイプを示します。 `a` と `b` は両方とも同じ型でなければなりません。サポートされている型は、`float32`、`float64`、`complex64`、および `complex128` です。

「a」と「b」は両方とも同じランクでなければなりません。ブロードキャストはサポートされていません。ランク 3 の場合、「a」と「b」内の 2D CSRSparseMatrices の各バッチは同じ密な形状を持つ必要があります。

スパース行列積には、数値 (非構造) ゼロが含まれる場合があります。 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.]]
 
a: `CSRSparseMatrix`。 b: `a` と同じタイプおよびランクを持つ `CSRSparseMatrix`。 type: `a` と `b` の両方の型。 transpose_a: True の場合、乗算の前に 'a' が転置されます。 transpose_b: True の場合、乗算の前に「b」が転置されます。 adjoint_a: True の場合、乗算の前に 'a' が隣接します。 adjoint_b: True の場合、乗算の前に「b」が隣接します。

ネストされたクラス

クラスSparseMatrixSparseMatMul.オプションSparseMatrixSparseMatMulのオプションの属性

パブリックメソッド

静的SparseMatrixSparseMatMul.Options
adjointA (ブール型 adjointA)
静的SparseMatrixSparseMatMul.Options
adjointB (ブール型 adjointB)
出力<オブジェクト>
asOutput ()
テンソルのシンボリック ハンドルを返します。
出力<?>
c ()
CSRSparseMatrix。
静的 <T> SparseMatrixSparseMatMul
create (スコープscope、オペランド<?> a、オペランド<?> b、Class<T>タイプ、オプション...オプション)
新しい SparseMatrixSparseMatMul オペレーションをラップするクラスを作成するファクトリ メソッド。
静的SparseMatrixSparseMatMul.Options
transposeA (ブールtransposeA)
静的SparseMatrixSparseMatMul.Options
transposeB (ブールtransposeB)

継承されたメソッド

パブリックメソッド

public static SparseMatrixSparseMatMul.Options adjointA (ブール型 adjointA)

パラメータ
随伴A 「a」を共役転置するかどうかを示します。

public static SparseMatrixSparseMatMul.Options adjointB (ブール型 adjointB)

パラメータ
随伴B 「b」を共役転置するかどうかを示します。

public Output <オブジェクト> asOutput ()

テンソルのシンボリック ハンドルを返します。

TensorFlow オペレーションへの入力は、別の TensorFlow オペレーションの出力です。このメソッドは、入力の計算を表すシンボリック ハンドルを取得するために使用されます。

public出力<?> c ()

CSRSparseMatrix。

public static SparseMatrixSparseMatMul create (スコープスコープ、オペランド<?> a、オペランド<?> b、Class<T> タイプ、オプション...オプション)

新しい SparseMatrixSparseMatMul オペレーションをラップするクラスを作成するファクトリ メソッド。

パラメータ
範囲現在のスコープ
あるCSRSparseMatrix。
b CSRSparseMatrix。
オプションオプションの属性値を持ちます
返品
  • SparseMatrixSparseMatMul の新しいインスタンス

public static SparseMatrixSparseMatMul.Options transposeA (ブール transposeA)

パラメータ
トランスポーズA 「a」を転置するかどうかを示します。

public static SparseMatrixSparseMatMul.Options transposeB (ブール transposeB)

パラメータ
トランスポーズB 「b」を転置するかどうかを示します。