スパース行列は、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)
[[ 2. 0. 0.]
[ 0. 0. 0.]
[ 35. 40. 0.]
[ -4. 0. 0.]]
ネストされたクラス
クラス | SparseMatrixSparseMatMul.オプション | SparseMatrixSparseMatMul のオプションの属性 |
定数
弦 | OP_NAME | TensorFlow コア エンジンによって認識される、この演算の名前 |
パブリックメソッド
静的SparseMatrixSparseMatMul.Options | adjointA (ブール型 adjointA) |
静的SparseMatrixSparseMatMul.Options | adjointB (ブール型 adjointB) |
出力< TType > | asOutput () テンソルのシンボリック ハンドルを返します。 |
出力<?> | c () CSRSparseMatrix。 |
static <T extends TType > SparseMatrixSparseMatMul | |
静的SparseMatrixSparseMatMul.Options | transposeA (ブールtransposeA) |
静的SparseMatrixSparseMatMul.Options | transposeB (ブールtransposeB) |
継承されたメソッド
定数
パブリック静的最終文字列OP_NAME
TensorFlow コア エンジンによって認識される、この演算の名前
パブリックメソッド
public static SparseMatrixSparseMatMul.Options adjointA (ブール型 adjointA)
パラメータ
随伴A | 「a」を共役転置するかどうかを示します。 |
---|
public static SparseMatrixSparseMatMul.Options adjointB (ブール型 adjointB)
パラメータ
随伴B | 「b」を共役転置するかどうかを示します。 |
---|
public Output < TType > asOutput ()
テンソルのシンボリック ハンドルを返します。
TensorFlow オペレーションへの入力は、別の TensorFlow オペレーションの出力です。このメソッドは、入力の計算を表すシンボリック ハンドルを取得するために使用されます。
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」を転置するかどうかを示します。 |
---|