TensorFlow2_200729系列---13、二阶梯度求解
一、总结
一句话总结:
梯度是放在with tf.GradientTape() as t1 语句之中,那二阶梯度就是这个语句的嵌套
import tensorflow as tf w = tf.Variable(1.0) b = tf.Variable(2.0) x = tf.Variable(3.0) with tf.GradientTape() as t1: with tf.GradientTape() as t2: y = x * w + b dy_dw, dy_db = t2.gradient(y, [w, b]) d2y_dw2 = t1.gradient(dy_dw, w) print(dy_dw) print(dy_db) print(d2y_dw2) assert dy_dw.numpy() == 3.0 assert d2y_dw2 is None
二、二阶梯度求解
博客对应课程的视频位置:
import tensorflow as tf w = tf.Variable(1.0) b = tf.Variable(2.0) x = tf.Variable(3.0) with tf.GradientTape() as t1: with tf.GradientTape() as t2: y = x * w + b dy_dw, dy_db = t2.gradient(y, [w, b]) d2y_dw2 = t1.gradient(dy_dw, w) print(dy_dw) print(dy_db) print(d2y_dw2) assert dy_dw.numpy() == 3.0 assert d2y_dw2 is None
tf.Tensor(3.0, shape=(), dtype=float32) tf.Tensor(1.0, shape=(), dtype=float32) None