在2.0中,求导换成了GradientTape。
(1)求导
如果知道确定的函数关系,可以直接利用GradientTape来求导。
代码如下:
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
x=tf.linspace(0.0,3*3.14159,150)
with tf.GradientTape() as tape:
tape.watch(x)
y=tf.math.sin(x)
grads = tape.gradient(y,x)
plt.plot(x,y,color='r')
plt.plot(x,grads,color='g')
plt.show()
结果如图:
这是最简单的求导。
如果要多次求导,可以使用嵌套的GradientTape:
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
x=tf.linspace(0.0,10.0,150)
with tf.GradientTape() as tape:
tape.watch(x)
with tf.GradientTape() as t:
t.watch(x)
y=x*x*x
z = t.gradient(y,x)
grads = tape.gradient(z,x)
plt.plot(x,y,color='r')
plt.plot(x,z,color='b')
plt.plot(x,grads,color='g')
plt.show()
使用2次GradientTape,可以求导2次。