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()是做什麼的?
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()是做什麼的?
功能如文檔說,tf.no_op()
什麼都不做。但是,當您在with tf.control_dependencies([x, y, z]):
塊內創建tf.no_op()
時,該操作將獲得對操作的控制依賴性x
,y
和z
。因此,它可以用來將一組副作用組合在一起,並給你一個單一的操作來傳遞給sess.run()
,以便在一個步驟中運行所有這些操作。
所以我們在block中編寫no_op的原因是激活control_dependencies塊來以指定的順序運行ops x,y,z? – Bubblethan
這幾乎是正確的:我們需要在'control_dependencies'塊中創建一個op來添加這些依賴關係。然而,順序稍微更微妙:(假設它們之間沒有其他邊緣)'x','y'和'z'可以以任意順序相對於彼此運行;和'control_dependencies'確保它們都在* no_op之前發生。 – mrry
您是否閱讀過文檔? –
是的,它說什麼也不做...... – Bubblethan