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