SparseMatrixSparseMatMul

공개 최종 클래스 SparseMatrixSparseMatMul

희소 행렬은 두 개의 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)
 
`c_sm_dense_value`는 조밀한 행렬 곱을 저장합니다.
[[  2.   0.   0.]
      [  0.   0.   0.]
      [ 35.  40.   0.]
      [ -4.   0.   0.]]
 
a: `CSRSparseMatrix`. b: `a`와 유형 및 순위가 동일한 `CSRSparseMatrix`입니다. 유형: `a`와 `b` 모두의 유형입니다. transpose_a: True인 경우 `a`는 곱하기 전에 전치됩니다. transpose_b: True인 경우 `b`는 곱하기 전에 전치됩니다. adjoint_a: True인 경우 `a`는 곱하기 전에 인접합니다. adjoint_b: True인 경우 `b`는 곱하기 전에 인접합니다.

중첩 클래스

수업 SparseMatrixSparseMatMul.Options SparseMatrixSparseMatMul 의 선택적 속성

공개 방법

정적 SparseMatrixSparseMatMul.Options
adjointA (부울 adjointA)
정적 SparseMatrixSparseMatMul.Options
adjointB (부울 adjointB)
<객체> 출력
출력 ()
텐서의 기호 핸들을 반환합니다.
출력 <?>
()
CSRSparseMatrix.
정적 <T> SparseMatrixSparseMatMul
생성 ( 범위 범위, 피연산자 <?> a, 피연산자 <?> b, Class<T> 유형, 옵션... 옵션)
새로운 SparseMatrixSparseMatMul 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.
정적 SparseMatrixSparseMatMul.Options
transposeA (부울 전치 A)
정적 SparseMatrixSparseMatMul.Options
transposeB (부울 전치 B)

상속된 메서드

공개 방법

공개 정적 SparseMatrixSparseMatMul.Options adjointA (부울 adjointA)

매개변수
인접 A 'a'를 공액 전치해야 하는지 여부를 나타냅니다.

공개 정적 SparseMatrixSparseMatMul.Options adjointB (부울 adjointB)

매개변수
인접 B 'b'를 공액 전치해야 하는지 여부를 나타냅니다.

공개 출력 <Object> asOutput ()

텐서의 기호 핸들을 반환합니다.

TensorFlow 작업에 대한 입력은 다른 TensorFlow 작업의 출력입니다. 이 메서드는 입력 계산을 나타내는 기호 핸들을 얻는 데 사용됩니다.

공개 출력 <?> c ()

CSRSparseMatrix.

public static SparseMatrixSparseMatMul create ( 범위 범위, 피연산자 <?> a, 피연산자 <?> b, Class<T> 유형, 옵션... 옵션)

새로운 SparseMatrixSparseMatMul 작업을 래핑하는 클래스를 생성하는 팩토리 메서드입니다.

매개변수
범위 현재 범위
CSRSparseMatrix.
CSRSparseMatrix.
옵션 선택적 속성 값을 전달합니다.
보고
  • SparseMatrixSparseMatMul의 새로운 인스턴스

공개 정적 SparseMatrixSparseMatMul.Options transposeA (부울 transposeA)

매개변수
전치 A 'a'를 바꿔야 하는지 여부를 나타냅니다.

공개 정적 SparseMatrixSparseMatMul.Options transposeB (부울 transposeB)

매개변수
B 'b'를 전치해야 하는지 여부를 나타냅니다.