AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

deeplearn.js:浏览器端机器智能框架

  • 2017-08-10
  • 本文字数:949 字

    阅读完需:约 3 分钟

deeplearn.js 最初由 Google Brain PAIR 开发,是一款基于硬件加速的开源 JavaScript 库,可被用在机器智能领域。该库将高性能的机器学习构建模块引入到 web 开发领域。PAIR 是 People Plus AI Research 的简称,意为“人 + 人工智能研究”,目标在于“使 AI 更加注重人性”。通过 deeplearn.js,可以实现在浏览器中训练神经网络模型,也可在推理阶段运行预训练模型。

deeplearn.js 目前已经开源,地址是: https://github.com/PAIR-code/deeplearnjs

deeplearn.js 以 TypeScript 作为首选语言,提供了可用于构建可微数据流图的 API,以及一系列可以直接使用的数学函数。该库有两个 API 模型,一个是即时执行模型(可认为是 NumPy),另一个是基于 TensorFlow 的 API 镜像的延时执行模型。该库还支持从 TensorFlow 检查点将权重转储为可以导入 deeplearn.js 的格式,但开发者必须在 deeplearn.js 中重新创建模型,并使用该检查点的权重。该库正计划建立一种可以直接从 TensorFlow 将模型端口从 GraphDef 自动传输到 deeplearn.js 的方法。同时该库使用 OES_texture_float 扩展以定位支持 WebGL 1.0 和 WebGL 2.0 的设备,对于不支持 WebGL 的设备,deeplearn.js 还提出了 CPU 回退机制。

在 deeplearn.js 中,NDArray是其核心数据单元,包括一系列浮点值,可以用于将其构建为任意维数的数组。NDArray也拥有一个用来定义形状的shape属性。例如一个 3*2 的矩阵用法如下:

复制代码
const shape = [3,2]; // 3 行,2 列
const matrix = Array2D.new(shape,[1.0,2.0,4.0,6.0,3.0,2.0]);

该库还提供了一个NDArrayMath基类,定义了一系列在NDArray上运行的数学函数,为模型内数据操作提供方便。在 deeplearn.js 中,可微数据流图和 TensorFlow 一样,使用的是延迟执行模型。通过FeedEntrys 提供的输入NDArray 构建一个计算图,然后再在上面进行训练或推断。其中FeedEntry对象和 TensorFlow 中的feed_dict类似,用来提供运行所需的数据。

在当前深度学习的浪潮下,deeplearn.js 为浏览器构建了强大的交互式机器学习工具,几乎可以被用在任何领域,包括教育、模型的理解、艺术项目等。


感谢徐川对本文的审校。

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

2017-08-10 19:006298

评论

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

kubebuilder 构建控制器说明点

Geek_f24c45

Kubernetes kubebuilder kube-controller

看云起云动 览开源盛世 | 亚马逊云科技中国峰会Dev Day线上来袭!

亚马逊云科技 (Amazon Web Services)

Go 专栏|复合数据类型:数组和切片 slice

AlwaysBeta

Go 语言

以两军问题为背景来演绎BasicPaxos

OpenIM

重磅!博睿数据通过CMMI5级评估,国内APM领域首家

博睿数据

北鲲云超算平台如何帮助现代生物制药发展?

北鲲云

LeetCode刷题278-简单-第一个错误版本

ベ布小禅

9月日更

数据安全法真的来了,这6个“雷区”千万别踩!

腾讯安全云鼎实验室

数据安全 数据安全法

AISWare AntDB 亚信数据库在多省份计费系统应用案例

亚信AntDB数据库

案例分享 #数据库 9月日更

数字人民币最新技术成果将亮相2021年服贸会

CECBC

洞穿性能测试痛点,PerfDog以提升应用和游戏的品质为使命

WeTest

“人类先锋”点亮物联网灯塔

脑极体

HTTP系列之:HTTP中的cookies

程序那些事

Java 网络协议 HTTP cookies

(深入篇)漫游语音识别技术—带你走进语音识别技术的世界

声网

深度学习 音视频 语音识别

Go 专栏|变量和常量的声明与赋值

AlwaysBeta

Go 语言

网络攻防学习笔记 Day124

穿过生命散发芬芳

9月日更 互联网安全

链路压测中各接口性能统计

FunTester

性能测试 测试框架 测试开发 FunTester 链路测试

Linux内核四大核心框架

hanaper

AJAX获取的日期相差8小时

hasWhere

线程同步类CyclicBarrier在性能测试集合点应用

FunTester

多线程 性能测试 线程安全 测试框架 FunTester

直播访谈-数据产品修炼之路

第519区

数据产品经理

Go 专栏|复合数据类型:字典 map 和 结构体 struct

AlwaysBeta

Go 语言

Java + opencv 实现图片修复(图片去水印)

张音乐

Java OpenCV 音视频 9月日更 图片去水印

财经大课:如何看待规模化与差异化竞争

石云升

财经思维 9月日更

MySQL 获取表的信息

玄兴梦影

MySQL 数据库表 查询语句

【HTML5游戏】从敲打空格键开始

devpoint

HTML5游戏 9月日更

未来10年,5个C/C++吃香的细分领域技术

奔着腾讯去

云原生 网络安全 音视频 DPDK 虚拟化技术

Go 专栏|基础数据类型:整数、浮点数、复数、布尔值和字符串

AlwaysBeta

Go 语言

数据结构和算法在流程画布中的实际应用

GrowingIO技术专栏

数据结构 G6 图可视化引擎 流程画布

🐦【Mybatis开发指南】如何清晰的解决出现「多对一模型」和「一对多模型」的问题

洛神灬殇

Java mybatis mybatis配置 9月日更

ShardingSphere 语句解析生成初探

源码 ShardingSphere

deeplearn.js:浏览器端机器智能框架_语言 & 开发_愚一_InfoQ精选文章