写点什么

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

  • 2018 年 4 月 26 日
  • 本文字数:1296 字

    阅读完需:约 4 分钟

看新闻很累?看技术新闻更累?试试下载 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: Core Layers 。低层的 Core API 对应于之前的 deeplearn.js 库。它提供了硬件加速线性代数运算操作,以及 eager API 实现自动微分服务。高层的 Layers API 在 Core API 之上搭建机器学习模型。Layers API 在 Keras 的基础上构建,实现了相似的功能。它同时支持引入之前用 Keras 或 TensorFlow SavedModels 通过 python 训练的模型,以推论或转移浏览器中的学习内容。

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

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

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

目前,已经存在几个类似的Javascript 实现深度学习的框架,比如最早的 brain.js 项目,以及斯坦福大学卷积神经网络的 ConvNet.js 库,还有最近的 KerasJS TensorFire 库。然而,这些库既缺少利用浏览器 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 )关注我们。

2018 年 4 月 26 日 19:003294
用户头像

发布了 217 篇内容, 共 55.7 次阅读, 收获喜欢 71 次。

关注

评论

发布
暂无评论
发现更多内容

技术中台之DevOps动态表单体系构建

EAWorld

基于docker部署jenkins(一)

李日盛

docker jenkins

一文搞懂 Flink 处理水印全过程

shengjk1

systemedctl使用指南

happlyfox

3月日更

产品经理第 0 期训练营第九周作业提交

Krystal

「产品经理训练营」第八章作业

Sòrγy_じò ぴé

设计模式--享元模式

学Java的猪猪侠

户口?大厂?高薪?生活?聊聊应届程序员的职业选择

流沙

职业发展

this指向

y

this指针

继承

y

继承

携手百度智能云推动实现工业AR空间智能化

百度大脑

AR 百度智能云

【操作系统】存储器管理

学Java的猪猪侠

操作系统--虚拟存储器概述

学Java的猪猪侠

通俗地理解面向服务的架构(SOA)以及微服务之间的关系

守护石

微服务 软件架构 ESB SOA BPM

关于全球央行数字货币实验的若干认识与思考

CECBC

银行

API 工具链研发的理论基础 - 导读

李宇飞

工具链 API sdk

作业 - 第八章 数据分析

hao hao

2021金三银四总结面试必备清单:字节/蚂蚁金服/腾讯/百度

比伯

Java 程序员 架构 互联网 技术宅

直播预告|4月1日与你相约腾讯云共探TcaplusDB

TcaplusDB

数据库 nosql 后端 TcaplusDB

Vue中如何在线预览pdf文件

y

数据分析

王一凡

浅论指针(二)

Integer

c 指针

一文搞懂 Flink Stream Join原理

shengjk1

flink源码 flink join

Flink SQL 自定义 Source format

shengjk1

flink sql

你有没有领导力?

石云升

领导力 28天写作 职场经验 管理经验 3月日更

产品 0 期 - 第八周作业

曾烧麦

产品训练营

用户路径地图

王一凡

结合 Flink 学习装饰者模式

shengjk1

flink源码 flink源码分析

行业首创,百度自主研发下一代区块链操作系统

CECBC

原子操作

阿里混沌工程平台实践

心远

阿里巴巴 混沌工程

Android 系统开发做什么?

吴小龙同学

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