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

标签 python optimization tensorflow

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

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

New Optimizer internal API for non-slot variables. Descendants of AdamOptimizer that access _beta[12]_power will need to be updated.



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

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

最佳答案

TensorFlow 优化器中的槽变量是与每个可训练变量相关联的子变量。例如,如果您有一个变量 Variable1 ,您可以添加一个名为 MovingAverage 的插槽,其名称为 Variable1/MovingAverage .
非时隙变量是属于优化器的一部分并且与任何可训练变量无关的变量,例如 David Parks 链接的问题中 LucasB 的回答中 Adam 中的计数器。
tf.keras.optimizers.Optimizer
有关文档中插槽的解释。另请注意,afaik Keras (TF2) 优化器并未明确支持非时隙变量 - 看起来像 optimizer._set_hyper()是在 TF2 中做到这一点的方法。
另外 - systech 的评论不正确 - 插槽和非插槽变量与 Python 的 __slots__ 无关功能。

关于python - Tensorflow 内部优化器 API 中的 `slot variable` 和 `non-slot variable` 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48918896/

相关文章:

python - 对于不可行的 NLP,Scipy.optimize 成功终止

python - 如何从 tf.estimator.Estimator 获取最后一个 global_step

python - 保持表达式与 latex 转换中所写的完全相同

python - 有没有办法暂时删除 PyInstaller 的非控制台选项?

python - Pandas Dataframe 创建一个独特的列

python - 在Python中编写一行,最好使用什么数据结构?

c - ARM 的 gcc 中是否使用了分支谓词?我们如何禁用它?

arrays - 在有序数组中快速查找元素

tensorflow - 将 Pytorch 程序翻译成 Keras : different results

python - 使用 Tensorflow 后端时,如何打印 Keras 的 SGD 优化器变体的中间状态