1. 不再需要构建计算图(computing graph),取而代之的是动态控制流(dynamic control flow)。
2. 饥饿模式下tf.tensor数据不再是一个符号,而是像真正的数值那样,可以做四则运算等操作。且tf.tensor借鉴了很多numpy计算方式,比如广播(broadcasting)。甚至可以转化为numpy类型变量。
3. 饥饿模式直接导致了我们不再需要control dependency(这部分其实我之前也不了解),因为每一行代码按顺序执行即可
4. tf1中存在着众多的tf.Variable 变量,为了重复使用这些变量,tf1加入了众多机制如Variable scopes, global collections, 方法tf.get_global_step()
, tf.global_variables_initializer()
等等,这些在tf2通通被移除。
5. tf2舍弃了session,如下:
# TensorFlow 1.X
outputs = session.run(f(placeholder), feed_dict={placeholder: input})
# TensorFlow 2.0
outputs = f(input)