import tensorflow as tf
# tf.enable_eager_execution()
x = tf.get_variable('x', shape=[1], initializer=tf.constant_initializer(3.))#这里 x 是一个初始化为 3 的 变量(Variable),使用 tf.get_variable() 声明, 初始化为float32 类型的 3.# tf.GradientTape() 是一个自动求导的记录器,在 tf.GradientTape() 的上下文内,所有计算步骤都会被记录以用于求导。with tf.GradientTape()as tape:
y = tf.square(x)
y_grad = tape.gradient(y, x)# 计算 y 关于 x 的导数print([y.numpy(), y_grad.numpy()])
(2)在机器学习中,更加常见的是对多元函数求偏导数,以及对向量或矩阵的求导。以下代码展示了如何使用 tf.GradientTape() 计算函数 L(w, b) = ∥Xw+bby∥^2 在 w = (1, 2)^T, b = 1 时分别对 w, b 的偏导数。其中 X = [1 2 3 4], y =[1 2 ]
X = tf.constant([[1.,2.],[3.,4.]])#Python 中可以使用整数后加小数点表示将该整数定义为浮点数类型。例如 3. 代表浮点数 3.0
y = tf.constant([[1.],[2.]])
w = tf.get_variable('w', shape=[2,1], initializer=tf.constant_initializer([[1