Eager模式简介
TensorFlow的eager模式是一个命令式编程环境,它使得我们可以立即评估操作产生的结果,而无需构建计算图。Eager模式极大的方便我们使用TensorFlow、调试模型,增加了网络调试的灵活程度和tensorflow对于初学者友好性。Eager模式提供了一个灵活的研究和实验机器学习平台,提供:直观的界面 - 自然地构建代码并使用Python数据结构。快速迭代小型模型和小型数据。更容易调试 -在交互式环境中直接检查、运行模型、测试变化。这个过程中代码会即时错误报告。自然控制流 - eager模式下使用Python控制流而不是图控制流,简化了动态模型的创建。热切执行支持大多数TensorFlow操作和GPU加速。
Eager模式运行特点
eager模式下,TensorFlow操作会立即执行并将其值返回给Python。tf.Tensor对象引用具体值而不是计算图中节点的符号句柄。由于在会话中没有构建和运行的计算图,因此使用print()语句或调试器很容易检查结果、评估输出,打印和检查张量值,而不影响计算梯度的过程。Eager模式下Tensorflow可与NumPy很好地协作。TensorFlow 数学运算可将Python对象和NumPy数组转换为tf.Tensor对象。而 tf.Tensor.numpy方法将对象的值作为NumPy返回ndarray。
Eager模式中梯度的计算
在Eager模式中,使用tf.GradientTape跟踪计算梯度的操作。由于在每次执行可能发生不同的操作,所有前向传递操作都被记录到Tape上。要计算渐变,就往后播放磁带然后丢弃。特定的tf.GradientTape只能计算一个梯度; 后续调用会引发运行时错误,也可以设置可重复调用。