获取优化器的更新增量 TF2 Tensorflow

问题描述

有没有办法获得优化器在更新步骤(在 opt.minimize(loss,[vars])opt.apply_gradients(zip(grads,[vars])) 中)添加到当前变量值的常量?

换句话说,如果我们将优化步骤写为 $\theta_{t+1}=\theta_t+U_{t+1}$,其中 $U_{t+1}$ 是优化器的函数,有没有办法获取$U_{t+1}$的值?

一个hacky的解决方案是制作一个变量的副本,对原始变量执行更新,然后从更新的原始变量中减去副本,即:

with tf.GradientTape() as tape:
    opt = tf.keras.optimizers.Adam()
    x = tf.Variable([[1.,2.],[3.,4.]])
    x_copy = tf.identity(x)
    f = lambda: x**2.-4.
    opt.minimize(f,[x])
    update_increment = x-x_copy
    print(update_increment.numpy())

有没有更好的办法?谢谢!

仅供参考 - 我隔离“更新增量”的动机是通过避免我猜测的 tf.assign() 隐藏在 opt.minimize(f,[x]) 中会杀死梯度流来实现差异化。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)