我有兩個神經網絡,NN1和NN2,在同一個Tensorflow圖中。我需要用NN1的權重來更新NN2的權重。爲此我執行session.run([w1_nn2.assign(w1_nn1), w2_nn2.assign(w2_nn1), ...])
,其中wi_nnj
是權重。所有這些任務都是作爲原子操作來執行的嗎?Tensorflow中線程安全克隆網絡權重?
如果情況並非如此(如我懷疑的那樣),在另一個線程中調用NNN上的apply_gradients()
時,在一個Python線程中調用這些分配並不安全,對吧?那麼以線程安全的方式執行此操作最簡單的方法是什麼?
我想我知道我自己的問題的答案。由於我使用Python,並且由於多線程如何在Python中工作,一個線程完成的'apply_gradients'將不會與另一個線程完成的變量分配同時執行,對嗎?即使Tensorflow可能會啓動多個線程來執行'apply_gradients'和賦值,因爲Python代碼將等待任何Tensorflow操作完成,對吧? – nicolas