Optimization 获取优化器';s更新增量TF2 Tensorflow

Optimization 获取优化器';s更新增量TF2 Tensorflow,optimization,tensorflow2.0,gradient,keras-2,automatic-differentiation,Optimization,Tensorflow2.0,Gradient,Keras 2,Automatic Differentiation,有没有办法获得优化器在更新步骤(在opt.minimize(loss,[vars])或opt.apply_梯度(zip(grads,[vars]))中)添加到当前变量值的常数 换句话说,如果我们将优化步骤写为$\theta{t+1}=\theta{t+U{t+1}$,其中$U{t+1}$是优化器的函数,有没有办法获得$U{t+1}$的值 黑客解决方案是复制变量,对原始变量执行更新,并从更新后的原始变量中减去副本,即: with tf.GradientTape() as tape: opt

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

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

黑客解决方案是复制变量,对原始变量执行更新,并从更新后的原始变量中减去副本,即:

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])
中,这将杀死梯度流