专栏首页AI算法与图像处理终版API已定型,TensorFlow 2.0 Beta蜕变归来

终版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-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 数据集。

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

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('Test accuracy:', test_acc)

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

predictions = model.predict(test_images)

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

本文分享自微信公众号 - AI算法与图像处理(AI_study)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • tensorflow-gpu安装及问题解决

    最近需要用GPU来进行tensorflow进行训练,发现需要安装cuda 9.0版本才可以,因为tensorflow默认的就是cuda 9.0,为了减少...

    sparkexpert
  • TensorFLow基础:使用TensorBoard进行可视化学习

    TensorFlow涉及到的运算,往往是在训练庞大的神经网络过程中出现的复杂且难以理解的运算,为了方便对程序进行理解、调试和优化,tensorflow提供...

    Steve Wang
  • 【TensorFlow】TensorFlow 的线性回归

    前面 有篇博文 讲了讲Ubuntu环境下安装TensorFlow,今天来说一说在TensorFlow中如何进行线性回归。

    Alan Lee
  • 2.2 TensorFlow变量管理

    版权声明:本文为博主原创文章,未经博主允许不得转载。python版本为python3,实例都是经过实际验证。 ...

    锦小年
  • 【TensorFlow】TensorFlow 的卷积神经网络 CNN - TensorBoard 版

    前面 写了一篇用 TensorFlow 实现 CNN 的文章,没有实现 TensorBoard,这篇来加上 TensorBoard 的实现,代码可以从 这里 下...

    Alan Lee
  • 3.2 详解优化器的选择

    版权声明:本文为博主原创文章,未经博主允许不得转载。python版本为python3,实例都是经过实际验证。 ...

    锦小年
  • 3.1 学习率(learning rate)的选择

    版权声明:本文为博主原创文章,未经博主允许不得转载。python版本为python3,实例都是经过实际验证。 ...

    锦小年
  • 百折不挠,终于装好「TensorFlow」

    此文为交流群「TensorFlow群」呵呵哒贡献,自己在win10中安装时踩过的坑,希望还被这些问题困扰的小伙伴,看完此文后能豁然开朗,同时没有安装过的以后可能...

    double
  • 双精度,单精度和半精度

    浮点数是计算机上最常用的数据类型之一,有些语言甚至数值只有浮点型(Perl,Lua同学别跑,说的就是你)。

    用户1148523
  • Ubuntu 16.04 Cuda8.0 tensorflow-gpu

    ubuntu 16.04 python 2.7 cuda7.5/Cuda8.0 tensorflow-gpu

    ke1th

扫码关注云+社区

领取腾讯云代金券