终版API已定型,TensorFlow 2.0 Beta蜕变归来
TensorFlow 2.0 Beta 已来,RC 还会远吗?
TensorFlow 发布以来,已经成为全世界最广泛使用的深度学习库。但 Tensorflow 1.x 时代最广受诟病的问题是:学习门槛较高、API 重复且复杂、模型部署和使用不够方便。之后,谷歌下定决心改变这一问题,在今年早些时候,发布了 Tensorflow 2.0 的 Alpha 版本。Alpha 版本一经问世,便受到深度学习研究者、开发者和在校学生的好评,其简洁的 API 和快速易上手的特性吸引了更多用户的加入。今天,Tensorflow 官方发布了 2.0 时代的 Beta 版本,标志着 Tensorflow 这一经典的代码库进一步成熟。
Tensorflow 今天发布 Tensorflow 2.0 Beta 版本。Tensorflow 官方表示,在 Tensorflow2.0 Alpha 版本发布后,已有超过 130000 名学生加入了 deeplearing.ai 和 Udacity 的相关课程。Github 上则已经收到 128000 颗星和超过 7500 次 fork。
在本次 beta 版本更新后,TensorFlow 团队已经完成了对 2.0 API 的对象重命名和移除工作。现有的 API 已经是最终版本,并且会作为 Tensorflow1.14 版本中的 v2 可兼容模块。同时 Tensorflow2.0 也增加了对 Keras 特性的支持,如简化定制化训练循环 API、增加对大部分硬件的分布式策略的支持等。
Tensorflow 产品生态中的核心组件,如 TensorBoard、TensorHub、TensorFlow Lite、和 TensorFlow.js 可以和 Beta 版本一起使用。但是对 TensorFlow Extended (TFX) 组件和端到端管道的支持工作仍在继续。
在 Alpha 版本发布后,TensorFlow 团队已经解决了超过 100 个 Github 的 issue,并仍对剩余的 issue 进行解决,他们希望开发者能够继续在提供相关的建议和反馈。在 release candidate(RC)版本发布前,TensorFlow 团队会完成云 TPU 和 TPU 对 Keras 模型的支持,继续对 Tensorflow 的表现进行优化,并解决更多用户提出的问题。
TensorFlow 2.0 Beta 到底有什么
如果读者们想体验一番 TF 2.0 Beta,那么直接使用如下的命令安装就行了:
> pip install tensorflow==2.0.0-beta0
但在使用前,我们需要先了解它的一些重要特性。其实,Tensorflow 2.0 版本和核心观点即致力于简单便捷的使用体验。围绕这个核心观点,TF 2.0 Beta 其更新了如下一些特性。
使用 Keras 和 eager execution 方便地搭建模型
在任何生产平台上都能稳健地部署模型
在研究中可以有力支持实验
简化、去重,并移除生命周期终结的 API
为了更具体地感受新版特性,以下给出了一些参考资料:
在 Tensorflow2.0 Alpha 版本后进行了特性提升和修复。如果用户没有查阅过,可以参考:https://github.com/tensorflow/tensorflow/releases/tag/v2.0.0-alpha0
对于从升级 Tenforflow1.x 到 2.0 版本的用户来说,请查阅升级和迁移指南:https://medium.com/tensorflow/upgrading-your-code-to-tensorflow-2-0-f72c3a4d83b5;https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/migration_guide.ipynb
官方同时发布了一系列教程和设置指南:https://www.tensorflow.org/beta
官方分布了 Tensorflow 2.0 风格指南:https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/effective_tf2.md
如果用户需要了解更多社区推动的更新,可以参考 Github 上的文档:https://github.com/tensorflow/community/tree/master/rfcs
新版本亮点
分布式训练策略:2.0 版本使用新的 tf.distribute.Strategy API,可以在尽量不改动代码的情况下用于分布式训练模型,达到良好的表现。同时 2.0 版本还支持更多的分布式策略,如对定制化训练循环的支持,以及对 Keras 子类模型的支持。官方发布了一个文档,用于查看这些新的支持(链接:https://www.tensorflow.org/beta/guide/distribute_strategy)。
API 冻结:完成了 API 中的符号重命名和修改。2.0 中的 API 已经是最终版本,并且会作为 Tensorflow1.14 版本中 compat.v2 模块。所有的变更都可以在这个文档看到(链接:https://docs.google.com/spreadsheets/d/1FLFJLzg7WNP6JHODX5q8BDgptKafq_slHpnHVbJIteQ/edit#gid=0)。
API 变更表示例。
重大更改
tf.contrib 目前已经完全被移除了,它里面的各种 API 要么移植到了 TensorFlow 的核心 API、要么移到了独立的第三方库 tensorflow_addons、或者完全移除了。
tf.estimator.DNN/Linear/DNNLinearCombined 系列 API 中的预制 estimator 已经更新了,可以直接使用 tf.keras.optimizers 中的最优化器,而不需要使用以前的 tf.compat.v1.train.Optimizers。如果我们没有将参数传入 optimizer =,或者直接使用字符串调用最优化器,那么预制的 Estimator 将直接使用 Keras 最优化器。
2.0 Beta 实战 Demo
那么 TF 2.0 Beta 版用起来什么感觉呢?TensorFlow 官方提供了一个 Demo 以展示如何用 Beta 版快速处理分类问题。因为整个过程已经通过 API 高度封装了起来,即使我们不懂底层细节,也能快速实现分类模型。
官方 Demo 地址:https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/r2/tutorials/keras/basic_classification.ipynb
首先当然是安装 TF 2.0 Beta,并导入库了。注意 tf.contrib 已经正式删除了,且很多 API 都已经并入 Keras 中,所以整个代码有一种浓厚的 Keras 风格。
!pip install tensorflow==2.0.0-beta0from __future__ import absolute_import, division, print_function, unicode_literals# TensorFlow and tf.kerasimport tensorflow as tffrom tensorflow import keras# Helper librariesimport numpy as npimport matplotlib.pyplot as plt
利用 API 导入 Fashion-MNIST 数据集也是很简单了,目前 tf.keras.datasets 可以导入 MNIST、Cifar-10/100 等视觉数据集,也可以导入 imdb 和 reuters 等 NLP 数据集。
fashion_mnist = keras.datasets.fashion_mnist(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot'] train_images = train_images / 255.0test_images = test_images / 255.0
因为使用 Keras 高级 API,搭建和编译模型也非常简单,基本就是调用已有的成熟方法就行了。其中搭建模型架构可以像堆积木那样完成,编译只需要给定最优化器、损失函数和度量方法三个关键要素就行了。
model = keras.Sequential([ keras.layers.Flatten(input_shape=(28, 28)), keras.layers.Dense(128, activation='relu'), keras.layers.Dense(10, activation='softmax')])model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
下面,我们可以看看模型训练与评估的风格。没有 tf.Session()、没有 sess.run()、没有各种占位符的 feed_dict,一切都只要简单的一行代码。
model.fit(train_images, train_labels, epochs=10)test_loss, test_acc = model.evaluate(test_images, test_labels)print('\nTest accuracy:', test_acc)
训练完模型后,最后就是做推断了:
predictions = model.predict(test_images)
以上是模型最主要的过程,当然 Demo 中间还会有一些展示,例如如何可视化数据或打印训练信息等,感兴趣的读者可查阅原始 Demo。总体而言,如同 TF 2.0 的一贯风格,新版 TensorFlow 力求最简洁、最直观地构建模型。
时间:2019-06-14 00:15 来源: 转发量:次
声明:本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。
相关文章:
- [数据挖掘]吴恩达deeplearning.ai新课上线:TensorFlow移动和web端
- [数据挖掘]2020职场AI技能排行榜:TensorFlow热度飙升,Python最
- [数据挖掘]TensorFlow 2.0中文开源书项目:日赞700,登上GitHu
- [数据挖掘]Tensorflow 2.0 到底好在哪里?
- [数据挖掘]TensorFlow 等“开源陷阱",会掐住中国 AI 企业
- [数据挖掘]TensorFlow什么的都弱爆了,强者只用Numpy搭建神经
- [数据挖掘]英文教程太难啃?这里有一份TensorFlow2.0中文教程
- [数据挖掘]TensorFlow的新生!
- [数据挖掘]重磅发布2.0 Alpha版,TensorFlow新定位:端到端开源
- [数据挖掘]1500+星标,简单易用 TensorFlow 代码集,随查随看!
相关推荐:
网友评论: