2016-08-18 1 views
1

compute_gradients 중 하나가 IndexedSlices 유형 인 반면 다른 유형은 tensor 인 RNN 모델을 tensorflow로 정의했습니다.tensorflow 얼마나 여러 IndexedSlicesValue 평균?

  1. 가 어떻게 여러 IndexedSlicesValue 값을 평균 수 : I session.run(compute_gradients ...) 후, IndexedSlices의 반환 값 유형은 나는이 개 질문이, IndexedSlicesValue입니까?
  2. IndexedSlicesValue을 직렬화하여 소켓을 통해 다른 컴퓨터로 보낼 수 있습니까?

은 대단히 감사합니다!

답변

1

IndexedSlices는 실제로 밀도가 높은 텐서 쌍을 사용하는 스파 스 텐서의 인코딩입니다. 아마도 tf.gather 작업의 그라디언트에서 온 것입니다. 다음은 도움이 될 수있는 IndexedSlices에 대한 API 문서입니다. https://www.tensorflow.org/api_docs/python/tf/IndexedSlices

IndexedSlices를 직접 사용하는 데 필요한 코드가 많지 않습니다. 일반적으로 그라디언트 코드의 일부로 사용되는 내부 정보입니다. 데이터 크기에 따라 이들을 작업하는 가장 쉬운 방법은 조밀 한 Tensor로 변환하여 처리/전송하는 것입니다.

+0

고맙습니다. 그러나 이것을 밀도가 높은 텐서로 변환하는 방법은 무엇입니까? 나는 tensorflow에서 API를 찾지 못했습니다. –

+0

약간 어색하지만, 내가 볼 수있는 가장 좋은 방법은'tf.scatter_add'를 사용하여 IndexedSlices 업데이트를 변수에 적용하는 것입니다. 내가 너에게 더 좋은 대답을 찾을 수 있는지 알게 될거야. –

+0

'tf.convert_to_tensor'는 조밀 한 텐서로 변환합니다. 그러나'IndexedSlices' 구조를 유지하면서 인덱스와 값을 연결하는 것이 더 효율적일 수 있습니다. 밀도가 높은 텐서가'IndexedSlices' 결합보다 훨씬 클 수 있기 때문입니다. –