自动求导记录器tf.GradientTape()
在with上下文间的所有计算都会被记录下来,通过调用gradient()进行求导
import tensorflow as tf
x = tf.Variable(initial_value=4.)
with tf.GradientTape() as tape:
y = tf.square(x)
y_grad = tape.gradient(y, x)
print(y, y_grad)
y=x²,当x=4时,y=16
y关于x的导数y’=2x,当x=4时,y=8
结果
tf.Tensor(16.0, shape=(), dtype=float32)
tf.Tensor(8.0, shape=(), dtype=float32)
自动更新参数optimizer.apply_gradients()
optimizer.apply_gradients(grads_and_vars=zip(grads, variables))
grads为梯度,等效于前面的‘y_grad = tape.gradient(y, x) ’,variables为更新的变量