Tensorflow 实现在浏览器的深度学习

  • Alexis Perrier
  • 刘嘉洋

2018 年 4 月 26 日

话题:JavaScript语言 & 开发AITensorFlow

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

在最近的TensorFlow Dev Summit 2018 大会上,Google 宣布发布Tensorflow.js,这是用 Javascript 实现的开源深度学习框架Tensorflow。Tensorflow.js 可以实现在浏览器中直接训练模型,通过使用 WebGL JavaScript API 获得更快的计算速度。

Tenforflow.js 是由 2017 年 8 月 Google 发布的 Javascript 库deeplearn.js演化而来的。Deeplearn.js 诞生于Tensorflow Playground这款由 TypeScript 编写的交互式可视化神经网络的大成功背景之下。

Tensorflow.js 共有四层:WebGL API 实现 GPU 支持的数字运算,web 浏览器提供用户交互以及两款 API:CoreLayers。低层的 Core API 对应于之前的 deeplearn.js 库。它提供了硬件加速线性代数运算操作,以及eager API 实现自动微分服务。高层的 Layers API 在 Core API 之上搭建机器学习模型。Layers API 在Keras的基础上构建,实现了相似的功能。它同时支持引入之前用 Keras 或TensorFlow SavedModels通过 python 训练的模型,以推论或转移浏览器中的学习内容。

使用 Tensorflow.js,可以通过三种方法将机器学习模型运用到浏览器中:引入已经预先训练过的模型,仅仅用来推论;在浏览器中直接训练模型;或是通过迁移学习先将引入的模型使用于用户环境中,之后再使用这些改进的模型进行推论。

Tensorflow 团队成员Nikhil ThoratDaniel Smilkov发布的视频中告诉我们,在浏览器中运行 Tensorflow 有几个优势:由于后台 API 需求不再有,因此需求得到了简化;由于新设备的增加,可用的数据越来越多,比如电脑的摄像头和麦克风以及移动设备的 GPS 和陀螺仪等设备都可以提供数据;数据始终保留在客户端,也解决了隐私安全方面的问题。

基于 Javascript 的深度学习降低了许多 web 开发人员进入数据科学领域的门槛。他们可以将机器学习的功能整合到应用程序中,给数据科学领域带来更多创新方法。在线演示中展示了如何通过直接在浏览器中运行机器学习提升交互的速度和质量,演示内容包括情感分析手势检测风格转变

目前,已经存在几个类似的 Javascript 实现深度学习的框架,比如最早的brain.js项目,以及斯坦福大学卷积神经网络的ConvNet.js库,还有最近的KerasJSTensorFire库。然而,这些库既缺少利用浏览器 WebGL 组件实现基于 GPU 的运算,又不可以直接在浏览器中训练模型。最近基于 Tensorflow.js 的项目,科学计算Propel和机器学习ml5就不会碰到这些问题。

Tensorflow 团队目前的工作重点是让 TensorFlow.js支持 Node.js,但还没有具体的时间表告诉我们什么时候可以实现。在 TensorFlow Dev 大会上还宣布了其他几项有关于Tensorflow 的开发,包括TensorFlow for Swift将在 2018 年 4 月发布,以及TensorFlow Hub,“这是一个分享不同预制模块的库,开发人员可以跨多个模型复用它们”。

查看英文原文Tensorflow with Javascript Brings Deep Learning to the Browser


感谢冬雨对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

JavaScript语言 & 开发AITensorFlow