Passing use_locking=True
when creating a TensorFlow optimizer, or a variable assignment op, causes a lock to be acquired around the relevant updates to the variable. Other optimizers/assignments on the same variable also created with use_locking=True
will be serialized.
However, there are two caveats that you should bear in mind when using this option:
Reads to the variables are not performed under the lock, so it is possible to see intermediate states and partially-applied updates. Serializing reads requires additional coordination, such as that provided by tf.train.SyncReplicasOptimizer
.
Writes (optimizers/assignments) to the same variable with use_locking=False
are still possible, and will not acquire the lock. The programmer is responsible for ensuring that these writes do not occur.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…