对于给定函数:y(w)=aw^2+bw+c
数学求导得:dy/dw=2aw+b
那么,(a,b,c,w)=(1,2,3,4)处的导数,dy/dw=2 * 1 *4 + 2=10
而在Tensorflow2.0中,梯度可以自动求取。具体代码如下:
import tensorflow as tf
a=tf.constant(1.)
b=tf.constant(2.)
c=tf.constant(3.)
w=tf.constant(4.)
with tf.GradientTape() as tape: # 构建梯度环境
tape.watch([w]) # 对w求梯度,并跟踪列表
y=a*w**2+b*w+c # 构建目标函数
[dy_dw] = tape.gradient(y, [w]) # 函数y对w求导
print(dy_dw) # 打印出导数
运行结果: