TensorFlow开发者峰会重磅发布TensorFlow.js,完全在浏览器运行机器学习

北京时间3月31日举行的2018 TensorFlow 开发者峰会上,TensorFlow宣布重大更新:增加支持Java,并推出开源库TensorFlow.js,用户可以完全在浏览器定义、训练和运行机器学习模型。谷歌大脑负责人Jeff Dean、TensorFlow 总监 Rajat Monga等人进行了Keynote演讲。

Jeff Dean主旨演讲:用超强大的计算力,替代ML(机器学习)专家

Jeff Dean也是目前最受欢迎的深度学习框架TensorFlow的缔造者之一,他曾经就TensorFlow的高级使用,如何用TensorFlow实现大规模机器学习等问题做过多次演讲。今年初,Jeff Dean执笔撰写谷歌大脑成绩单,介绍了TensorFlow取得的一系列重要更新。

图:TensorFlow 用户的分布地图

TensorFlow 是 GitHub 上的第一个机器学习平台,也是 GitHub 上的五大软件库之一,被许多公司和组织所使用,包括 GitHub 上与 TensorFlow 相关的超过 24,500 个不同的软件仓库。预编译的 TensorFlow 二进制文件已经在 180 多个国家被下载了超过 1000 万次,GitHub 上的源代码现在已经有超过 1200 个贡献者。

在TensorFlow 1.0发布之后的两年中,TensorFlow 不断更新升级,逐渐成为机器学习社区最流行的深度学习框架。下图是从开源以来,TensorFlow 的重大更新,例如 TensorBoard、XLA New APIs、High-level APIs、tfkeras、Eager Execution、TF Lite等。

在演讲中,Jeff Dean先以NAE列出的“21世纪亟需解决的问题”开头,他说,机器学习会在所有这些问题中起到作用。而且,机器学习是关键,尤其是推动医疗的进展、为科学发现提供工具等方面。

Jeff Dean说,目前机器学习领域的一般方案是:ML的专门知识+数据+计算力。但是能不能用更强大的计算力替代ML专家或者ML专业知识,这一点谷歌正在践行。

Jeff Dean接下来介绍了AutoML。

自动化机器学习的目标是为计算机开发能够自动解决新的机器学习问题的技术,而不用每次遇到新问题都需要人类机器学习专家干预。如果我们想要真正的智能系统,这是所需要的最基本的能力。

AutoML是使用强化学习和进化算法设计神经网络结构的新方法。

ML+医疗是强大的组合。谷歌在AI医疗方面取得了一系列成就,例如使用深度学习从视网膜眼底照片预测心血管疾病的研究。

增加支持Java,完全在浏览器定义、训练和运行机器学习模型

TensorFlow开发者峰会上还宣布了一件大事:

TensorFlow宣布推出TensorFlow.js,这是一个开源库,可以使用Java和high-level layers API完全在浏览器中定义、训练和运行机器学习模型。如果你是机器学习的初学者,那么TensorFlow.js是开始学习的好方法。或者,如果你是机器学习开发者,但对于Java是新手,那么请继续阅读,了解更多在浏览器内进行机器学习的新机会。我们将简要介绍一下TensorFlow.js,并介绍一些试用的资源。

在浏览器运行机器学习

完全在浏览器中运行机器学习程序可以开发新的机会,例如交互式机器学习!在TensorFlow开发者峰会上,Daniel Smilkov和Nikhil Thorat演示了如何使用计算机视觉和网络摄像头训练模型来控制PAC-MAN游戏,这是完全在浏览器进行的。

demo:https://storage.googleapis.com/tfjs-examples/webcam-transfer-learning/dist/index.html

代码:https://github.com/tensorflow/tfjs-examples

图:使用神经网络将你的网络摄像头变成PAC-MAN的控制器

如果你想尝试其他游戏,例如Emoji Scavenger Hunt——这次是使用手机上的浏览器。

图:Emoji Scavenger Hunt是使用TensorFlow.js构建的另一个有趣的demo。你可以用手机试一下

从用户的角度来看,在浏览器中运行的ML意味着不需要安装任何库或驱动程序。只需打开一个网页,即可运行你的程序。此外,它也可以使用GPU加速运行。TensorFlow.js自动支持WebGL,并在GPU可用时在后台加速代码。用户也可以通过移动设备打开网页,在这种情况下,模型可以利用传感器数据,例如陀螺仪或加速度计。最后,所有数据都保留在客户端上,使得TensorFlow.js可用于低延迟推断以及隐私保护的应用程序。

你可以用TensorFlow.js做什么?

如果你使用TensorFlow.js进行开发,可以考虑以下三种workflow:

  • 你可以导入现有的预训练的模型进行推理。如果你有一个以前脱机训练好的现成的TensorFlow或Keras模型,就可以将其转换为TensorFlow.js格式,并加载到浏览器中进行推理。
  • 你可以重新训练导入的模型。正如在上面的Pac-Man演示中,你可以使用迁移学习来增强现有模型,使用“Image Retraining”技术,用浏览器中收集的少量数据进行离线训练。这是快速训练精确模型的一种方法,只需使用少量数据。
  • 直接在浏览器中创建模型。你还可以使用TensorFlow.js,完全在浏览器中使用Java和high-level layers API进行定义、训练和运行模型。如果你熟悉Keras,那么应该会很熟悉high-level layers API。

一些代码示例

以下内容展示了如何在浏览器中导出用Python定义的模型进行推理,以及如何完全用Java定义和训练模型。这里有一段代码定义了一个用于来对花朵进行分类的神经网络,就像在TensorFlow.org的入门指南中的代码一样。在这里,我们使用一堆layers来定义一个模型。

这里使用的layers API支持示例目录中的所有Keras 层(包括Dense,CNN,LSTM等)。然后,我们可以使用Keras兼容的API来训练我们的模型:

这个模型现在可以用来做预测:

TensorFlow.js还包含 low-level API(以前称为deeplearn.js),并且支持Eager执行。

上图是TensorFlow.js API的概览。TensorFlow.js由WebGL支持,并提供用于定义模型的high-level layers API和用于线性代数和自动微分的 low-level API。TensorFlow.js支持导入TensorFlow SavedModels和Keras模型。

TensorFlow.js和deeplearn.js有什么区别?

好问题!TensorFlow.js是用于机器学习的Java工具生态系统,是deeplearn.js的接替者,deeplearn.js现在已经改名TensorFlow.js Core了。

TensorFlow.js还包含一个Layers API,它是用于构建使用Core的机器学习模型的更高级的库,以及用于自动移植TensorFlow SavedModels和Keras hdf5模型的工具。

更多材料,请访问TensorFlow.js的主页:https://js.tensorflow.org/

本文主要内容引自 搜狐科技