スパース行列-2つのCSR行列 `a`と` b`を乗算します。
スパース行列 `a`とスパース行列` b`の行列乗算を実行します。 `a`または` b`が転置または隣接されていない限り、スパース行列 `a * b`を返します。
各行列は、ブールパラメータ `transpose_a`、` adjoint_a`、 `transpose_b`、および` adjoint_b`に従って転置または随伴(共役および転置)できます。 `transpose_a`または` adjoint_a`の多くてもTrueになります。同様に、 `transpose_b`または` adjoint_b`の最大1つがTrueになる可能性があります。
入力は互換性のある形状である必要があります。つまり、 `a`の内側の寸法は` b`の外側の寸法と等しくなければなりません。この要件は、 `a`または` b`のいずれかが転置または隣接しているかどうかに応じて調整されます。
`type`パラメーターは、行列要素のタイプを示します。 `a`と` b`は両方とも同じタイプでなければなりません。サポートされているタイプは、 `float32`、` float64`、 `complex64`、および` complex128`です。
`a`と` b`は両方とも同じランクでなければなりません。ブロードキャストはサポートされていません。ランク3の場合、 `a`と` b`内の2DCRSSparseMatricesの各バッチは同じ密な形状である必要があります。
スパース行列積には、数値(非構造)のゼロが含まれる場合があります。 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.Options | SparseMatrixSparseMatMul オプションの属性 |
パブリックメソッド
static SparseMatrixSparseMatMul.Options | adjointA (ブール値adjointA) |
static SparseMatrixSparseMatMul.Options | adjointB (ブール値adjointB) |
出力<オブジェクト> | asOutput () テンソルのシンボリックハンドルを返します。 |
出力<?> | c () CSRSparseMatrix。 |
static <T> SparseMatrixSparseMatMul | |
static SparseMatrixSparseMatMul.Options | transposeA (ブール値transposeA) |
static SparseMatrixSparseMatMul.Options | transposeB (ブール値transposeB) |
継承されたメソッド
パブリックメソッド
public static SparseMatrixSparseMatMul.Options adjointA (ブール値adjointA)
パラメーター
adjointA | `a`を共役転置する必要があるかどうかを示します。 |
---|
public static SparseMatrixSparseMatMul.Options adjointB (ブール値adjointB)
パラメーター
adjointB | `b`を共役転置するかどうかを示します。 |
---|
public Output <Object> asOutput ()
テンソルのシンボリックハンドルを返します。
TensorFlow操作への入力は、別のTensorFlow操作の出力です。このメソッドは、入力の計算を表すシンボリックハンドルを取得するために使用されます。
public static SparseMatrixSparseMatMul create (スコープスコープ、オペランド<?> a、オペランド<?> b、クラス<T>タイプ、オプション...オプション)
新しいSparseMatrixSparseMatMul操作をラップするクラスを作成するファクトリメソッド。
パラメーター
範囲 | 現在のスコープ |
---|---|
a | CSRSparseMatrix。 |
b | CSRSparseMatrix。 |
オプション | オプションの属性値を運ぶ |
戻り値
- SparseMatrixSparseMatMulの新しいインスタンス
public static SparseMatrixSparseMatMul.Options transposeA (ブール値transposeA)
パラメーター
transposeA | `a`を移調するかどうかを示します。 |
---|
public static SparseMatrixSparseMatMul.Options transposeB (ブール値transposeB)
パラメーター
transposeB | `b`を移調するかどうかを示します。 |
---|