2017-10-18 48 views
0
with tf.dependencies([train_step,variable_average_op]): 
    train_op = tf.no_op('train') 
..... 
_, loss, steps = sess.run([train_op, loss, global_step],feed_dict...) 

我感到困惑的是TF的,NO_OP()這裏tf.no_op()是做什麼的?

+0

您是否閱讀過文檔? –

+0

是的,它說什麼也不做...... – Bubblethan

回答

5

功能如文檔說,tf.no_op()什麼都不做。但是,當您在with tf.control_dependencies([x, y, z]):塊內創建tf.no_op()時,該操作將獲得對操作的控制依賴性x,yz。因此,它可以用來將一組副作用組合在一起,並給你一個單一的操作來傳遞給sess.run(),以便在一個步驟中運行所有這些操作。

+0

所以我們在block中編寫no_op的原因是激活control_dependencies塊來以指定的順序運行ops x,y,z? – Bubblethan

+0

這幾乎是正確的:我們需要在'control_dependencies'塊中創建一個op來添加這些依賴關係。然而,順序稍微更微妙:(假設它們之間沒有其他邊緣)'x','y'和'z'可以以任意順序相對於彼此運行;和'control_dependencies'確保它們都在* no_op之前發生。 – mrry