开发 | TensorFlow 1.0 要来了!它将带来哪些革命性变化?

在发布逾一周年之际,TensorFlow 终于将迎来史上最重大更新:TensorFlow 1.0。

对于不熟悉开源框架的读者,TensorFlow 是谷歌 2015 年底推出的深度学习框架,在开发者社区享有盛誉。去年,它已成为 GitHub 最受欢迎的机器学习开源项目。因其高度普及率,尤其是在 Python 生态圈中,TensorFlow 的功能变化会对全世界的机器学习开发者造成重大影响。

本月初,谷歌公布了 TensorFlow 1.0.0-alpha ,即 TensorFlow 1.0 的第一个“草稿”版本。近日,新的候选版本 TensorFlow 1.0.0-rc0 被发布出来,披露了更多技术细节,标志着我们离 “完全体”的 TensorFlow 1.0 更近一步。

AI 科技评论消息,1.0 版本不仅为 TensorFlow 机器学习函数库带来多重升级,而且为 Python 和 Java 用户使用 TensorFlow 做开发降低了难度。另外,新版本的漏洞修补也得到了改善。更有意思的是,由于对 TensorFlow 计算做优化的新编译器,智能手机上运行基于 TensorFlow 的机器学习 APP 将成为可能

强化对 Python 支持,加入 Java API

由于 Python 是最常用的机器学习开发语言,TensorFlow 1.0 对 Python 交互作了重点改进——Python API 得到升级,TensorFlow 使用的语法和隐喻(syntax、metaphor)与 Python 的能更好吻合,提升两者之间的一致性。

AI 科技评论获知,该升级带来了一个坏消息:现有 Python 应用将无法兼容。TensorFlow 开发者们已经发布了一个能把旧 TensorFlow API 转化为新格式的脚本,但是该脚本无法解决所有问题——很多情况下,开发者需要人工调整脚本。

TensorFlow 现已支持与 Python 3 兼容的 Docker 镜像。对于所有 Python 用户,TensorFlow 现在可以通过 Python 的原生软件包管理器 pip 来安装。这是提升 TensorFlow 可用性的关键一步,尤其对于那些使用原生 Python 应用分发、而非使用数据科学专用体系(比如 Anaconda)的用户。

Java 是机器学习领域的另一个主流语言平台。此前,TensorFlow 并没有对其支持,更没有一系列对 Java 的捆绑,而新的 1.0 版本引入了一个 Java API。但雷锋网(公众号:雷锋网)提醒,它还远未成熟,随时可能会有变化。而且,你需要 Linux 或者 Mac OS 平台上的来源来开发 TensorFlow(你可以把这作为 Windows 端 TensorFlow 是二等公民的另一个证据)。

使 TensorFlow 在移动设备上运行

TensorFlow 1.0 的最大变化或许不是新语言支持或者新算法,而是 XLA —— 全称 Accelerated Linear Algebra,意为加速线性代数,是一个针对 TensorFlow 中线性代数运算的试验性质编译器。它通过生成既能运行于 GPU、又能在 CPU 运行的机器代码,来加速数学计算。目前, XLA 只支持英伟达 GPU,但这与当下机器学习应用对 GPU 支持的现状是一致的。

XLA 提升了 TensorFlow 的移动性。现有的、未经调整的 TensorFlow 程序只需创建一个后端即可在新硬件平台上运行。这么做的意义非同寻常 ——此前, IBM 就为它的 PowerAI 机器学习硬件解决方案加入了对 TensorFlow 的支持,前者由 Power8 CPU 和 GPU 混合运行。

TensorFlow的工程师已经缩减了它的整体内存占用和 APP 的存储空间占用。这些优化对各类硬件运行环境都有好处,但对于移动平台尤其重要。此前的 TensorFlow 版本已经加入了对安卓、iOS 和 Raspberry Pi(树莓派微型电脑)硬件平台的支持,使得 TensorFlow 能在这类设备上处理诸如图像分类之类的任务。

关于机器学习的讨论往往会涉及高端硬件——机器学习,尤其是深度学习,是发展高端硬件的重要推动力量,不管是定制 CPU、GPU 阵列、FPGA 还是支持云端坏境的规模化硬件。但有理论认为,创造出能在普通智能手机上运行的机器学习模型,而无需 24 小时每时每刻的云端支持,将会孵化出一系列新型应用。这便是 TensorFlow 1.0 的野心之一。

via infoworld

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2017-01-31

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏成长道路

JDBC动态SQL语句连接orcale数据库的工具类

import java.sql.Connection; import java.sql.DriverManager; import java.sql.P...

2510
来自专栏听雨堂

想修改CSS

      下载了一个“通用”的CSS文件,本来想偷懒的,结果发现有问题,就是它用的颜色是变量定义的,无法识别。我又找不到在哪里可以定义。 BODY{     ...

20410
来自专栏飞扬的花生

日志帮助类

 1.代码 using System; using System.Collections.Generic; using System.Linq; using S...

1919
来自专栏张善友的专栏

Using sqlite with .NET

The other day I found that there is a .NET wrapper for sqlite. sqlite is a very ...

2298
来自专栏菩提树下的杨过

MSDN官方的ASP.Net异步页面的经典示例代码

示例1.演示异步获取一个网址的内容,处理后显示在OutPut这一Label上 using System; using System.Web; using S...

1995
来自专栏码匠的流水账

聊聊spring cloud的AbstractLoadBalancingClient

本文主要研究一下spring cloud的AbstractLoadBalancingClient

842
来自专栏互联网开发者交流社区

WinForm之窗体应用程序

1863
来自专栏xingoo, 一个梦想做发明家的程序员

windows程序设计-第四章 system1.c

/*---------------------------------------------------- SYSMETS1.C -- System M...

23710
来自专栏积累沉淀

Hive2.0.0操作HBase 1.2.1报错解决

首先看错  org.apache.hive.service.cli.HiveSQLException: Failed to open new session: ...

2359
来自专栏菩提树下的杨过

SqlTransaction事务使用示例

using System; using System.Data; using System.Data.SqlClient; using System.Co...

1868

扫码关注云+社区