【发布时间】:2023-03-14 06:56:02
【问题描述】:
我上一个使用 tensorflow 的项目是在 2016 年,从那以后引入了 Eager Execution。在进一步阅读之后,似乎可以使用它来代替原来的会话对象方法。
由于 Eager Execution 提供了更好的反馈和更直接的方法来设计和调试神经网络,我们应该始终将 Eager Execution 用于新项目,还是原始会话方法有优势?
【问题讨论】:
标签: tensorflow
我上一个使用 tensorflow 的项目是在 2016 年,从那以后引入了 Eager Execution。在进一步阅读之后,似乎可以使用它来代替原来的会话对象方法。
由于 Eager Execution 提供了更好的反馈和更直接的方法来设计和调试神经网络,我们应该始终将 Eager Execution 用于新项目,还是原始会话方法有优势?
【问题讨论】:
标签: tensorflow
在 tensorflow 2.0 中,将默认启用 Eager Execution。它旨在能够完全替代图形/会话模式,是 tensorflow 开发人员的优先事项。有关更多详细信息,并加入有关该主题的讨论,请查看 tensorflow github 上的此 RFC:RFC: Functions, not sessions in 2.0。 tensorflow roadmap 也暗示了这一点。
对新项目使用 Eager 模式很好。到目前为止,原始会话方法仍有优势(正如 jdehesa 所提到的,一些“高级功能”尚不兼容 Eager),但 TensorFlow 开发人员正在积极致力于改进 Eager(和图形)模式。如果您遇到任何问题或缺少功能,我们感谢 github 上的错误报告。
【讨论】:
编辑:
以下答案基于 Eager move 的公告帖子和当前可用的文档。不过,rachelim's answer 提供了有关 Eager 模式的未来计划及其在 TensorFlow 2.x 中更重要作用的进一步见解。
不,Eager Execution 是作为学习和实验的“简单模式”引入的。 TensorFlow 的优势在于其计算图结构和独立于执行环境(会话);例如,这使您可以运行分布在不同机器上的相同模型或将其导出以跨不同语言使用。
当然,如果可以满足您的所有需求,您可以在“生产”中使用 Eager 模式,但请注意,您将无法访问许多高级功能,即使在这些可以“移植”的情况下" 对于急切执行,这样做可能不是开发人员的优先事项,因为它不应该取代“传统”执行模式。
编辑:如需进一步参考,请参阅 Eager Execution 指南中的 Work with graphs,其中指出了基于图形的代码与 Eager 代码的一些优点以及如何使用这两者。
【讨论】: