TensorFlow2.0专栏之:从1.x到2.0的变化

举报
qinggedada 发表于 2020/10/29 14:49:32 2020/10/29
【摘要】 本章针对有TensorFlow1.0基础的学习者,如果没有了解过TensorFlow的小伙伴也可以直接跳过,不影响后续学习~从1.x到2.0的变化TensorFlow2.0在1.x的基础上做了重新设计,重点放在了提升开发人员的工作效率。TensorFlow2.0为了提升易用性做了很多改进,例如对API做了精简,删除了冗余的API,使得API更加一致(例如统一TensorFlow和tf.ker...

本章针对有TensorFlow1.0基础的学习者,如果没有了解过TensorFlow的小伙伴也可以直接跳过,不影响后续学习~

从1.x到2.0的变化TensorFlow2.0在1.x的基础上做了重新设计,重点放在了提升开发人员的工作效率。TensorFlow2.0为了提升易用性做了很多改进,例如对API做了精简,删除了冗余的API,使得API更加一致(例如统一TensorFlow和tf.keras的循环神经网络和优化器等),以及由静态计算图转变为动态计算图等(这使得代码的编写和调试变得更加容易)。

总结一句:TensorFlow2.0比1.0好用!

那么,TensorFlow从1.x到2.0的变化具体有哪些呢?

1.API精简

很多TensorFlow1.x的API在2.0中被去掉或者改变了位置,还有一些则被新的API给替换掉了。官方提供了一个转换工具,可以用来将1.x版本的代码升级到2.0,其主要工作其实就是修改这些有变更的API。

2.动态计算图

动态计算图(Eager Execution)是TensorFlow从1.8版开始正式加入的,但只是作为一种可选操作。在TensorFlow2.0之前,TensorFlow默认的模式都是静态计算图机制(GraphExecution),TensorFlow2.0将动态计算图设为默认模式。在该模式下用户能够更轻松地编写和调试代码,可以使用原生的Python控制语句,大大降低学习和使用TensorFlow的门槛。

在TensorFlow2.0中,图(Graph)和会话(Session)都变成了底层实现,而不再需要用户关心了。

3.取消全局变量

TensorFlow1.x非常依赖隐式全局命名空间。调用“tf.Variable”创建变量时,该变量就会被放进默认的图中,即使我们忘记了指向它的Python变量,它也会留在那里。当我们想恢复这些变量时,必须知道该变量的名称。如果没法控制这些变量的创建,也就无法做到这点。

TensorFlow1.x中有各种机制旨在帮助用户再次找到他们所创建的变量,在2.0版中则取消了所有这些机制,支持默认机制:跟踪变量。当我们不再用到某个变量时,该变量就会被自动回收。

4.使用函数

在TensorFlow1.x中,使用“session.run()”方法执行计算图,“session.run()”方法的调用类似于函数调用:指定输入数据和调用的方法,最后返回输出结果。为了保留静态图的优势,如性能优化及重用模块化的TensorFlow函数等。

在TensorFlow2.0中,我们可以使用“tf.function()”来修饰Python函数以将其标记为即时(Just-In-Time)编译,从而TensorFlow可以将其作为单个图来执行。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。