tensorflow

Tensorflow 动态图Eager

2019-05-22  本文已影响0人  Persistently

https://www.tensorflow.org/guide/eager#setup_and_basic_usage

TensorFlow 的 Eager Execution 是一种命令式编程环境,可立即评估操作,无需构建图:操作会返回具体的值,而不是构建以后再运行的计算图。这样能让您轻松地开始使用 TensorFlow 和调试模型,并且还减少了样板代码。要遵循本指南,请在交互式 python 解释器中运行下面的代码示例。

Eager Execution 是一个灵活的机器学习平台,用于研究和实验,可提供:

1. 直观的界面 - 自然地组织代码结构并使用 Python 数据结构。
2. 快速迭代小模型和小型数据集。
3. 更轻松的调试功能 - 直接调用操作以检查正在运行的模型并测试更改。
4. 使用标准Python 调试工具进行即时错误报告。
5. 自然控制流程 - 使用 Python 控制流程而不是图控制流程,简化了动态模型的规范。

更新到最新版

 $ pip install -q --upgrade tensorflow==1.11

要启动 Eager Execution,请将 tf.enable_eager_execution() 添加到程序或控制台会话的开头。不要将此操作添加到程序调用的其他模块。

 from __future__ import absolute_import, division, print_function
 import tensorflow as tf
 tf.enable_eager_execution()

现在您可以运行 TensorFlow 操作了,结果将立即返回:

 tf.executing_eagerly()

举个例子
a = tf.constant([[1, 2], [3, 4]])
print(a)

tf.contrib.eager 模块包含可用于 Eager Execution 和 Graph Execution 环境的符号,对编写处理图的代码非常有用:

tfe = tf.contrib.eager

动态控制流

会直接打印出信息

Eager 训练

自动微分对于实现机器学习算法(例如用于训练神经网络的反向传播)来说很有用。在 Eager Execution 期间,请使用 tf.GradientTape 跟踪操作以便稍后计算梯度。

tf.GradientTape 是一种选择性功能,可在不跟踪时提供最佳性能。由于在每次调用期间都可能发生不同的操作,因此所有前向传播操作都会记录到“磁带”中。要计算梯度,请反向播放磁带,然后放弃。特定的 tf.GradientTape 只能计算一个梯度;随后的调用会抛出运行时错误。

上一篇下一篇

猜你喜欢

热点阅读