희소 행렬은 두 개의 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` 중 최대 하나만 True일 수 있습니다.
입력은 호환 가능한 모양이어야 합니다. 즉, 'a'의 내부 차원은 'b'의 외부 차원과 동일해야 합니다. 이 요구 사항은 'a' 또는 'b'가 전치되거나 인접되는지 여부에 따라 조정됩니다.
'type' 매개변수는 행렬 요소의 유형을 나타냅니다. `a`와 `b`는 모두 동일한 유형이어야 합니다. 지원되는 유형은 `float32`, `float64`, `complex64` 및 `complex128`입니다.
`a`와 `b`는 모두 동일한 순위를 가져야 합니다. 방송은 지원되지 않습니다. 순위가 3인 경우 `a` 및 `b` 내의 2D CSRSparseMatrices의 각 배치는 동일한 조밀한 모양을 가져야 합니다.
희소 행렬 곱에는 숫자(비구조적) 0이 있을 수 있습니다. TODO(anudhyan): 0을 잘라낼지 여부를 제어하려면 부울 속성을 추가하는 것을 고려하세요.
사용 예:
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.Options | SparseMatrixSparseMatMul 의 선택적 속성 |
상수
끈 | OP_NAME | TensorFlow 핵심 엔진에서 알려진 이 작업의 이름 |
공개 방법
정적 SparseMatrixSparseMatMul.Options | adjointA (부울 adjointA) |
정적 SparseMatrixSparseMatMul.Options | adjointB (부울 adjointB) |
출력 < T유형 > | 출력 () 텐서의 기호 핸들을 반환합니다. |
출력 <?> | 씨 () CSRSparseMatrix. |
static <T는 TType을 확장합니다. > SparseMatrixSparseMatMul | |
정적 SparseMatrixSparseMatMul.Options | transposeA (부울 전치 A) |
정적 SparseMatrixSparseMatMul.Options | transposeB (부울 전치 B) |
상속된 메서드
상수
공개 정적 최종 문자열 OP_NAME
TensorFlow 핵심 엔진에서 알려진 이 작업의 이름
공개 방법
공개 출력 < TType > asOutput ()
텐서의 기호 핸들을 반환합니다.
TensorFlow 작업에 대한 입력은 다른 TensorFlow 작업의 출력입니다. 이 메서드는 입력 계산을 나타내는 기호 핸들을 얻는 데 사용됩니다.
public static SparseMatrixSparseMatMul create ( 범위 범위, 피연산자 <?> a, 피연산자 <?> b, Class<T> 유형, 옵션... 옵션)
새로운 SparseMatrixSparseMatMul 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.
매개변수
범위 | 현재 범위 |
---|---|
에이 | CSRSparseMatrix. |
비 | CSRSparseMatrix. |
옵션 | 선택적 속성 값을 전달합니다. |
보고
- SparseMatrixSparseMatMul의 새 인스턴스