2
它只能防止異步更新,還是會導致對變量的其他訪問等待更新?我同時使用相同的模型進行訓練和推理,並且要確保推理總是在一致的模型上完成。什麼是use_locking = True在TensorFlow優化器中做什麼?
它只能防止異步更新,還是會導致對變量的其他訪問等待更新?我同時使用相同的模型進行訓練和推理,並且要確保推理總是在一致的模型上完成。什麼是use_locking = True在TensorFlow優化器中做什麼?
當創建TensorFlow optimizer或變量assignment op時,通過use_locking=True
會導致在變量的相關更新周圍獲取鎖定。將使用use_locking=True
創建的同一變量上的其他優化器/賦值將被序列化。
然而,有兩個警告,你應該考慮使用該選項時承擔:
讀取到下鎖不執行變量,因此可以看到中間狀態和部分應用的更新。序列化讀取需要額外的協調,例如由tf.train.SyncReplicasOptimizer
提供的協調。
寫入(優化器/賦值)與use_locking=False
相同的變量仍然是可能的,並且不會獲取該鎖。程序員負責確保不會發生這些寫操作。