专栏名称: 机器之心
目录
相关文章推荐
AIbase基地  ·  AI日报:阿里春招3000岗位AI相关占50 ... ·  昨天  
AIbase基地  ·  AI日报:阿里春招3000岗位AI相关占50 ... ·  昨天  
爱可可-爱生活  ·  通过因果视角揭示和增强思维链推理 ... ·  昨天  
爱可可-爱生活  ·  《爱可可微博热门分享(2.26)》 ... ·  昨天  
新智元  ·  360联合北大震撼发布!5%参数量逼近Dee ... ·  3 天前  
51好读  ›  专栏  ›  机器之心

TensorFlow发布面向JavaScript开发者的机器学习框架TensorFlow.js

机器之心  · 掘金  · AI  · 2018-03-31 05:22

正文

TensorFlow发布面向JavaScript开发者的机器学习框架TensorFlow.js

当时时间 3 月 30 日,谷歌 TenosrFlow 开发者峰会 2018 在美国加州石景山开幕,来自全球的机器学习用户围绕 TensorFlow 展开技术演讲与演示。去年的 TensorFlow 开发者大会上,该框架正式升级到了 1.0 版本,逐渐成为最流行的深度学习框架。今年,TensorFlow 发布了面向 JavaScript 开发者的全新机器学习框架 TensorFlow.js。

在大会上午的 Keynote 中,谷歌大脑负责人 Jeff Dean、TensorFlow 总监 Rajat Monga 等人围绕 TensorFlow 做了表现、流行度等方面的介绍。

据介绍,在过去的两年中,TensorFlow 不断更新,不断改善,逐渐成为社区内最为流行的深度学习框架。下图是从开源以来,TensorFlow 的重大更新,例如 TensorBoard、tfdata、tfkeras、Eager Execution 等。

而且据统计,两年内,TensorFlow 已经有一千一百万下载,超过三万的 commits,6900 以上的 pull requests,1400 多位 contributors。

今年,围绕 TensorFlow,谷歌同样做出了几项重大宣布:

1. 发布新的 TensorFlow 官方博客( blog.tensorflow.org/ )与 TensorFlow YouTube 频道;

2. 面向 JavaScript 开发者的全新机器学习框架 TensorFlow.js;

3. 发布一系列新的库与工具:例如 TensorFlowHub、TensorFlow Probability API、Nucleus、DeepVariant 等。

在今天的几项重大宣布中,比较有趣的是面向 JavaScript 开发者的全新机器学习框架 TensorFlow.js。在下文中,机器之心对 TensorFlow.js 做了细致介绍:

在大会的 Keynote 中,TensorFlow 团队表示基于网页的 JavaScript 库 TensorFlow.js 现在已经能训练并部署机器学习模型。我们可以使用神经网络的层级 API 构建模型,并在浏览器中使用 WebGL 创建复杂的数据可视化应用。此外 Node.js 很快就会发布,它能为网站模型提供 GPU、TPU 等快速训练与推断的方法。

在 TensorFlow.js 中,我们可以使用最底层的 JavaScript 线性代数库或最高级的 API 在浏览器上开发模型,也能基于浏览器运行已训练的模型。因此,它可以充分利用浏览器和计算机的计算资源实现非常多机器学习应用。例如在网页端训练一个模型来识别图片或语音,训练一个模型以新颖的方式玩游戏或构建一个能创造钢琴音乐的神经网络等。这些新颖的模型作为案例在 TensorFlow.js 中都提供了实现代码,读者也可以跟随教程实现基于浏览器的模型。

TensorFlow.js 项目主页: js.tensorflow.org/


TensorFlow.js 的核心概念

TensorFlow.js 是一个开源的用于开发机器学习项目的 WebGL-accelerated JavaScript 库。TensorFlow.js 可以为你提供高性能的、易于使用的机器学习构建模块,允许你在浏览器上训练模型,或以推断模式运行预训练的模型。TensorFlow.js 不仅可以提供低级的机器学习构建模块,还可以提供高级的类似 Keras 的 API 来构建神经网络。

TensorFlow.js 的安装非常简单,我们可以直接使用 NMP 或脚本完成构建。它的使用也有非常多的文档与教程,我们只需要掌握一些基本的核心概念就能快速入手这一 JS 库。接下来,我们介绍这个库的一些核心概念。


Tensor

TensorFlow.js 中的中心数据单元是张量(tensor):一维或多维数组。一个 Tensor 实例的 shape 属性定义了其数组形状(即,数组的每个维度上有多少个值)。

Tensor 主要构造函数是 tf.tensor 函数:

// 2x3 Tensor
const shape = [2, 3]; // 2 rows, 3 columns
const a = tf.tensor([1.0, 2.0, 3.0, 10.0, 20.0, 30.0], shape);
a.print(); // print Tensor values
// Output: [[1 , 2 , 3 ],
//          [10, 20, 30]]

// The shape can also be inferred:
const b = tf.tensor([[1.0, 2.0, 3.0], [10.0, 20.0, 30.0]]);
b.print();
// Output: [[1 , 2 , 3 ],
//          [10, 20, 30]]


Variable

Variable 使用一个张量值来初始化。然而,和 Tensor 不一样,它们的值是可变的。你可以用 assign 方法分配一个新的张量到一个已有的变量(variable):

const initialValues = tf.zeros([5]);
const biases = tf.variable(initialValues); // initialize biases
biases.print(); // output: [0, 0, 0, 0, 0]

const updatedValues = tf.tensor1d([0, 1, 0, 1, 0]);
biases.assign(updatedValues); // update values of biases
biases.print(); // output: [0, 1, 0, 1, 0]






请到「今天看啥」查看全文