tf.while_loop(cond,
body,
loop_vars,
shape_invariants=None,
parallel_iterations=10,
back_prop=True, swap_memory=False,
name=None,
maximum_iterations=None,
return_same_structure=False)
tf.while_loop 能夠這樣理解:less
loop = [] while cond(loop): loop = body(loop)
即loop參數先傳入cond 判斷條件是否成立,成立以後,把 loop參數傳入body 執行操做, 而後返回 操做後的 loop 參數,即loop參數已被更新,再把更新後的參數傳入cond, 依次循環,直到不知足條件。函數
咱們來看這樣一個場景如何在 tensorflow中實現:oop
i= 0 n =10 while(i < n): i = i +1
首先這個要有個判斷條件的語句,即:spa
i < n
知足條件就執行循環體裏的操做,這個判斷條件在tensorflow裏,要寫個函數來代替,即:code
def cond(i, n): return i < n
以後是循環體裏的操做,也要一個函數來代替,即:blog
def body(i, n): i = i + 1 return i, n
請注意body函數裏雖然沒有與參數 n 有關的操做,可是必需要傳入參數 n, 由於正如前面所說,要構成循環,參數在body函數更新後還要返回給cond函數,判斷是否知足條件,若是不傳入參數 n 下次,就無法判斷了,合起來總得代碼爲:it
import tensorflow as tf i = tf.constant(0) c = lambda i: tf.less(i, 10) b = lambda i: tf.add(i, 1) r = tf.while_loop(c, b, [i]) with tf.Session() as sess: tf.global_variables_initializer().run() print(sess.run(r))