前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >终版API已定型,TensorFlow 2.0 Beta蜕变归来

终版API已定型,TensorFlow 2.0 Beta蜕变归来

作者头像
机器之心
发布2019-06-14 16:38:15
5510
发布2019-06-14 16:38:15
举报
文章被收录于专栏:机器之心机器之心

机器之心报道

参与:思源、戴一鸣

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,那么直接使用如下的命令安装就行了:

代码语言:javascript
复制
> 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 风格。

代码语言:javascript
复制
!pip install tensorflow==2.0.0-beta0

from __future__ import absolute_import, division, print_function, unicode_literals
# TensorFlow and tf.keras
import tensorflow as tf
from tensorflow import keras
# Helper libraries
import numpy as np
import matplotlib.pyplot as plt

利用 API 导入 Fashion-MNIST 数据集也是很简单了,目前 tf.keras.datasets 可以导入 MNIST、Cifar-10/100 等视觉数据集,也可以导入 imdb 和 reuters 等 NLP 数据集。

代码语言:javascript
复制
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.0
test_images = test_images / 255.0

因为使用 Keras 高级 API,搭建和编译模型也非常简单,基本就是调用已有的成熟方法就行了。其中搭建模型架构可以像堆积木那样完成,编译只需要给定最优化器、损失函数和度量方法三个关键要素就行了。

代码语言:javascript
复制
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,一切都只要简单的一行代码。

代码语言:javascript
复制
model.fit(train_images, train_labels, epochs=10)

test_loss, test_acc = model.evaluate(test_images, test_labels)
print('\nTest accuracy:', test_acc)

训练完模型后,最后就是做推断了:

代码语言:javascript
复制
predictions = model.predict(test_images)

以上是模型最主要的过程,当然 Demo 中间还会有一些展示,例如如何可视化数据或打印训练信息等,感兴趣的读者可查阅原始 Demo。总体而言,如同 TF 2.0 的一贯风格,新版 TensorFlow 力求最简洁、最直观地构建模型。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器之心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档