tensorflow-1和2的区别直观理解

Tensorflow 1 和 2 区别直观理解

  1. 1.X的感觉和过去用的ns3很像,默认方式是先要定义一个静态结构,然后训练操作流程时独立的。这样运行效率比较高,但是调试起来费劲。最直观的一点,就是一些在函数中预先定义静态结构“彷佛”是不执行的,这造成有些写在后面的语句彷佛先执行了一样。2.X默认采用动态图处理的方式,和python风格更接近(Eager execution)。
  2. 1.X版本有很多额外的概念比如,graph,session,run,placeholder,feed_dict这些,这些其实和静态模型构建息息相关,在2.X版本中不再使用了。
  3. 1.X的tensorflow像一个平台工具,只是借用了python语言,tensorflow 1.X本身更像是一种描述神经网络模型的语言,2.X版本更像python的一个包。
  4. 1.X中的变量空间和命名空间使得变量管理比较复杂,并大量依赖隐式全局名称空间(这点类似c++),还有一些必须的初始化比如tf.global_variables_initializer(), 2.X消除了所有这些机制,支持跟踪变量。(根据这第1点和第4点我特别怀疑1.X的设计者C++用的很6)
  5. 2.X版本中默认使用keras作为高级API, 1.X中需要自己装。在1.X中使用keras反而更容易移植到2.X。
  6. 1.X中一些API很难找,而且位置分类有很多争议,2.X版本重新归纳整理了API。