use_locking=True在TensorFlow优化器中做什么?



它是否只防止异步更新,还是还会导致对变量的其他访问等待更新?我同时使用相同的模型进行训练和推理,并希望确保推理总是在一致的模型上完成。

在创建TensorFlow优化器或变量赋值操作时传递use_locking=True,会导致在变量的相关更新周围获取锁。对同样用use_locking=True创建的变量的其他优化器/赋值将被序列化。

但是,在使用该选项时,有两个注意事项需要牢记:
  • 对变量的读取不是在锁下执行的,因此可以看到中间状态和部分应用的更新。序列化读需要额外的协调,如tf.train.SyncReplicasOptimizer提供的。

  • use_locking=False相同变量的写(优化器/赋值)仍然是可能的,并且不会获得锁。程序员负责确保这些写操作不发生。

最新更新