2016-11-07 2 views
1

나는 텐서가 [100 X 16 X 16]입니다. 이 텐서의 대각선 요소를 얻어서 텐서 모양의 [100 X 16]을 얻고 싶습니다. 나는 다음을 시도했다 :Tensorflow : 다중 행렬의 대각선을 얻는 방법 (일괄 처리 모드)

#sum_cov[100 X 16 X 16]이고 diagonal_elements[100 X 16] 일 것으로 예상된다.

Input must have even rank <= 6, input rank is 3 for 'DiagPart'

사람이 어떻게이를 말해 주시겠습니까 :

diagonal_elements = tf.diag_part(sum_cov)

는하지만, 나는 다음과 같은 오류가 발생합니다?

+0

'tf.matrix_diag_part'가 원하는대로 작동합니다. –

답변

0

https://www.tensorflow.org/api_docs/python/tf/diag_part https://www.tensorflow.org/api_docs/python/tf/matrix_diag_part

dm0_는 권리입니다. 너는 tf.matrix_diag_part을 원한다.

tf.diag_part 입력 텐서는 다음 출력 텐서가 (D1, ..., Dk) 모양이 (D1, ..., Dk, D1, ..., Dk) 모양을 가지고 있으며, 당신이 오류가 발생하는 이유

tf.diag_part(input)[i1, ..., ik] = input[i1, ..., ik, i1, ..., ik] 

이되도록이면 대각선 텐서를 계산합니다. 위의 전제 조건을 유지하려면 입력 텐서가 짝수 순위 여야합니다.

tf.matrix_diag_part은 입력 텐서를 2 차원 행렬의 일괄 처리로 처리하고 각각의 대각선을 계산합니다. 입력 텐서가 (I, J, K, ..., M, N)을 형성 한 경우 그래서, 출력 텐서는 모양 (I, J, K, ..., min(M, N))이 두 기능은 순위 2 텐서에 대해 동일합니다 같은

tf.matrix_diag_part(input)[i, j, k, ..., m] = input[i, j, k, ..., m, m] 

것을, 그러나보다 높은 아무것도 그들은 매우 다른 짐승이야 것이다.

관련 문제