TensorFlow中的自动微分

2021-09-19  本文已影响0人  LabVIEW_Python

自动微分可以极大的减少开发者实现反向传播算法的代码量,现在各家AI框架都有自动微分功能。TensorFlow的自动微分通过 tf.GradientTape API函数来实现,即计算tf.Variable的梯度。

TensorFlow 会将在 tf.GradientTape 上下文内执行的相关运算“记录”到“条带(Tape)”上,然后使用条带(Tape)通过反向模式微分计算“已记录的”计算的梯度

具体代码实现如下:

w = tf.Variable([[2.0]])
with tf.GradientTape() as tape:
    loss = w*w*w + 2*w*w
# d_loss = 3w*w + 4*w
d_loss = tape.gradient(loss, w)
print(grad)

范例代码:求Sine函数的微分

import tensorflow as tf 
import matplotlib.pyplot as plt

x = tf.linspace(-3.14,3.14,200+1)

with tf.GradientTape() as tape:
    tape.watch(x)
    y = tf.sin(x)

dy_dx = tape.gradient(y, x)
plt.plot(x,y,label='y')
plt.plot(x,dy_dx, label="dy_dx")
plt.legend()
plt.xlabel('x')
plt.show()
运行结果
上一篇下一篇

猜你喜欢

热点阅读