Ste*_*ven 7 python optimization tensorflow
我从一个保存的模型加载,我希望能够重置一个tensorflow优化器,如Adam Optimizer.理想情况如下:
sess.run([tf.initialize_variables(Adamopt)])
Run Code Online (Sandbox Code Playgroud)
要么
sess.run([Adamopt.reset])
Run Code Online (Sandbox Code Playgroud)
我试过寻找答案,但还没有找到任何办法.以下是我发现的不解决问题的方法:https: //github.com/tensorflow/tensorflow/issues/634
我基本上只想要一种方法来重置Adam Optimizer中的"slot"变量.
谢谢
小智 6
这个问题也困扰了我一段时间。实际上,这很容易,您只需定义一个操作即可重置优化器的当前状态,该操作可以通过variables()方法获得,如下所示:
optimizer = tf.train.AdamOptimizer(0.1, name='Optimizer')
reset_optimizer_op = tf.variables_initializer(optimizer.variables())
Run Code Online (Sandbox Code Playgroud)
每当您需要重置优化器时,请运行:
sess.run(reset_optimizer_op)
Run Code Online (Sandbox Code Playgroud)
变量的官方解释:
编码优化程序当前状态的变量列表。在当前默认图形中包括优化器创建的插槽变量和其他全局变量。
例如,对于AdamOptimizer而言,只要beta1_power和beta2_power,您将获得所有可训练变量的第一和第二时刻(具有slot_name'm'和'v')。
小智 5
在 tensorflow 2.x 中,例如 Adam 优化器,您可以像这样重置它:
for var in optimizer.variables():
var.assign(tf.zeros_like(var))
Run Code Online (Sandbox Code Playgroud)
我发现的最简单的方法是为优化器提供自己的变量范围,然后运行
optimizer_scope = tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES,
"scope/prefix/for/optimizer")
sess.run(tf.initialize_variables(optimizer_scope))
Run Code Online (Sandbox Code Playgroud)
来自冻结重量的想法
归档时间: |
|
查看次数: |
3531 次 |
最近记录: |