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」を転置するかどうかを示します。