2017-11-20 3 views
0

2 라운드 루프를 구현하고 싶습니다.텐서 흐름 동적 루프의 모범 사례?

그리고 그것을 구현하는 tf.while_loop

무엇 최선의 방법을 사용하여 수행하기 어려운 찾을 두 라운드를위한 tensorflow에 의해 루프?

나는 그것이 이렇게 될 수있는 희망 : 가능

import tensorflow as tf 

a = tf.constant([1,2,3,4,5]) 
b = tf.constant([1,2,3,4,5]) 

sess = tf.Session() 

for i in tf.range(tf.constant(0),tf.shape(a)[0]): 
    for j in tf.range(tf.constant(0),tf.shape(b)[0]): 
     print(sess.run([i,j])) 

인가?

답변

2

원하는 동작을 지정하지 않았지만 붙여 넣은 코드가 예상 한대로 작동하지 않는다고 생각합니다. 다음과 같은 옵션이 있습니다.

  • tf.while_loop을 사용하십시오. 이것은 while 루프를 가진 그래프를 만들 것이다. 이러한 그래프를 실행하면 CPU 또는 GPU를 사용하여 C++ 런타임에서 효율적으로 실행됩니다.
  • 일반 파이썬 루프 (for i in range(10):)를 사용하고 session.run()을 여러 번 호출하십시오. 이런 식으로 session.run()에 대한 호출간에 수행해야하는 작업은 모두 파이썬에서 발생하며 느려질 수 있습니다. 예를 들어 session.run()에 전달한 출력 텐서는 CPU 메모리에 복사됩니다 (GPU에서 주 계산이 수행되는 경우). 이 방법은 일반적으로 권장하지 않습니다.
  • 최근에 출시 된 eager execution을 사용하십시오. "문서"섹션에 더 많은 문서 링크가 있습니다. 열정적 인 실행은 제어 흐름을 위해 임의의 파이썬 코드를 사용할 수있게하지만 모든 작업은 여전히 ​​CPU/GPU에서 효율적으로 수행됩니다.