2017-10-17 4 views
0

저는 pytorch 모델과 tensorflow 모델을 가지고 있습니다. 나는 하나의 GPU에 다음과 같은 프로세스를 따라 이들을 훈련시키고 싶습니다 : input --> pytorch model--> output_pytorch --> tensorflow model --> output_tensorflow --> pytorch model.하나의 GPU에서 파이 토치 및 텐서 플로우 모델을 함께 교육 할 수 있습니까?

이 작업을 수행 할 수 있습니까? 대답이 '예'라면, 어떤 문제가 있습니까?

미리 감사드립니다.

+0

TF에서'per_process_gpu_memory_fraction'을 사용하여 단일 세션으로 메모리 사용을 제한하고 FIFO 대기열을 사용하여 두 모델을 연결합니다. –

+0

예. 그러나 나는 그것을 추천하지 않을 것이다. TF는 GPU 만 사용하기를 선호합니다. –

답변

0

이 작업을 수행하지는 않았지만 가능하지만 구현은 약간 일 수 있습니다. 각 네트워크를 하나의 함수로 생각할 수 있습니다. 어떤 의미에서는 네트워크를 형성하기 위해 이러한 함수를 작성하고, 이렇게하려면 하나의 네트워크의 결과를 다른 노드에 전달하여 최종 함수를 계산 한 다음 chain- 규칙을 사용하여 파생 상품을 계산합니다 (두 패키지의 상징적 인 차별화 사용).

저는 TF 모델을 PyTorch 으로 랩핑하고 역방향 통과을 계산하는 데 tf.gradients을 사용하는 것이 좋은 방법이라고 생각합니다. 그라디언트 업데이트를 수행하는 것이 실제로 어려울 수 있습니다 (TF의 계산 그래프에 일부 변수가 있기 때문에). TF 변수를 PyTorch Variable으로 바꾸어 TF 계산 그래프에서 placeholde으로 바꾼 다음 feed_dict으로 보내고 PyTorch 메커니즘을 사용하여 업데이트합니다. 함수를 뒤로 할 수있는 방법으로 내부적으로 업데이트를하면 작업을 수행 할 수 있습니다 (실제로는 못 생기는 일이지만 작업을 수행 할 수도 있음).