tf.while_loop

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))
本站公眾號
   歡迎關注本站公眾號,獲取更多信息