2016-09-07 1 views
2

여기에서 질문을 읽었습니다. TensorFlow - get current value of a Variable 대답이 혼란 스럽습니다.TensorFlow는 어떤 캐싱 모델을 사용합니까?

dga는 "매우 명확해야합니다. 변수를 실행하면 변수의 현재 값만 생성되고 할당 작업은 실행되지 않습니다. 값이 쌉니다."

반면 Salvador Dali는 "@dga 예, 변수가 다른 변수 n에 에 따라 다르면 평가해야합니다."라고 말합니다.

그래서 어떤가요? 변수를 평가할 때 현재 값만 반환합니까 아니면 에 의존하는 변수에서 처음부터 값을 다시 계산합니까?

동일한 변수를 두 번 연속 평가하면 어떻게됩니까? Tensorflow에는 "부실한"변수, 즉 의 종속성이 실제로 변경되었으므로 (예 : 빌드 시스템) 을 다시 계산해야하는 변수가 있습니까?

하나의 net의 부분 출력이 다른 그물의 부분 입력이되는 여러 그물을 가지고 작업하기 때문에 물어 봅니다. 한 네트워크의 입력 레이어에서 계산 된 그라데이션을 가져 와서 다른 네트워크의 출력 레이어 에 병합 + 적용하고 싶습니다. 나는 수동으로이 작업을 수행하기를 희망했다. 그래프의 변수에 그라디언트를 가져 오거나 저장 한 다음 그라디언트를 백 프로 퍼 게이트하기 위해 그래프 작업을 실행하는 . 따라서 나는 후드 밑에서 어떻게 작동 하는지를 이해해야한다.

는 내가 뭘하면이 How to use Tensorflow Optimizer without recomputing activations in reinforcement learning program that returns control after each iteration?과 유사하지만, 나는 그것이 마지막 대답 (지금 실험 지원?)

감사에 따라 가능 여부를 결론 지을 수 없다!

답변

2

@dga가 정확합니다. tf.Variable 개체를 tf.Session.run()에 전달하면 TensorFlow는 변수의 현재 값을 반환하고 계산을 수행하지 않습니다. 저렴합니다 (메모리 복사 비용 또는 분산 TensorFlow 설정의 경우 네트워크 전송 가능성). TensorFlow는 tf.Variable의 값이 어떻게 업데이트되었는지에 대한 기록을 유지하지 않으므로 일반적으로 값을 처음부터 다시 계산할 수 없습니다.


는 (* 기술적 TensorFlow는 데 사용 된 tf.Tensor 각 변수 초기화 기억하므로 변수의 inital 값을 재 계산하는 것이 가능하다.)

+0

OK 모든 캐시된다. 고맙습니다. –

관련 문제