固定链接 自动微分,优化机器学习模型的关键技术

自动微分,优化机器学习模型的关键技术

自动微分,优化机器学习模型的关键技术

今天将介绍自动微分,这是优化机器学习模型的关键技术。

设置

梯度带

TensorFlow 提供用于自动微分的 tf.GradientTape API – 计算与其输入变量相关的计算梯度。TensorFlow 通过 tf.GradientTape “记录” 在上下文中执行的所有操作到 “磁带”(tape)上。然后,TensorFlow 使用该磁带和与每个记录操作相关联的梯度来计算使用反向模式微分的 “记录” 计算的梯度。

例如:

您还可以根据在 “记录” tf.GradientTape 上下文时计算的中间值请求输出的梯度:

默认情况下,GradientTape 持有的资源会在调用 GradientTape.gradient() 方法后立即释放。要在同一计算中计算多个梯度,创建一个持久的梯度带。这允许多次调用 gradient() 方法。当磁带对象 tape 被垃圾收集时释放资源。例如:

记录控制流

因为磁带(tape)在执行时记录操作,所以自然会处理 Python 控制流(例如使用 ifs 和 whiles):

高阶梯度

GradientTape 记录上下文管理器内部的操作以实现自动区分。如果梯度是在这个上下文中计算的,那么梯度计算也会被记录下来。因此,同样的 API 也适用于高阶梯度。例如:

下一步

以上教程中,我们介绍了 TensorFlow 中的梯度计算。有了这些,我们就有了足够的基本要素来构建和训练神经网络。

本文作者:Google TensorFlow 团队
原文链接:https://mp.weixin.qq.com/s/FKN_sDG74n47g0ZXJLHahw

您的留言将激励我们越做越好