Tensorflow内部优化器API中的`slot variable`和`non-slot variable`有什么区别?

时间:2018-02-22 02:53:17

标签: python optimization tensorflow

我熟悉Tensorflow Optimizer API并通过_create_slots()中的optimizer.Optimizer方法使用了插槽变量,虽然我没有专家,但我已经入侵了我了解这个API的方法。

在1.6RC1发行说明(https://github.com/tensorflow/tensorflow/releases)中,关于插槽变量有以下几点,我完全不了解:

  

针对非插槽变量的新优化程序内部API。后裔   访问_beta [12] _power的AdamOptimizer需要更新。

这里引用的是什么非槽变量?

API中的插槽和非插槽变量有什么区别?

2 个答案:

答案 0 :(得分:0)

Lucas B发布给另一个只有部分相关问题的答案似乎已经完美地回答了这个问题:

How to initialize only Optimizer variables in Tensorflow?

答案 1 :(得分:0)

TensorFlow优化器中的插槽变量是与每个可训练变量关联的子变量。例如,如果您有一个变量Variable1,则可以添加一个名为MovingAverage的插槽,其名称为Variable1/MovingAverage

非时隙变量是优化器的一部分,并且不与任何可训练变量关联,例如,在由David Parks链接的问题中,LucasB的答案中Adam的计数器。

请参见tf.keras.optimizers.Optimizer 有关文档中插槽的说明。还要注意,afaik Keras(TF2)优化器并不明确支持非插槽变量-看来optimizer._set_hyper()是在TF2中实现此目的的方法。

也-systech的注释不正确-插槽和非插槽变量与Python的__slots__功能无关。