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

时间:2016-09-27 04:21:03

标签: multithreading locking tensorflow

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

1 个答案:

答案 0 :(得分:9)

在创建TensorFlow optimizer或变量assignment op时传递use_locking=True会导致围绕变量的相关更新获取锁定。 <_ 1}}创建的同一变量的其他优化器/赋值将被序列化。

但是,使用此选项时您应该牢记两个警告

  • 在锁定下不读取变量,因此可以看到中间状态和部分应用的更新。序列化读取需要额外的协调,例如use_locking=True提供的协调。

  • 仍然可以使用tf.train.SyncReplicasOptimizer将(优化器/赋值)写入同一个变量,并且不会获取锁定。程序员负责确保不会发生这些写入。