TensorFlow.js 简介:JavaScript 中的机器学习
2018 年 3 月 30 日
作者:Josh GordonSara Robinson,开发者倡导者

我们很高兴地推出 TensorFlow.js,这是一个开源库,您可以使用它来完全在浏览器中定义、训练和运行机器学习模型,使用 Javascript 和高级层 API。如果您是 Javascript 开发人员,但对 ML 并不熟悉,TensorFlow.js 是一个很好的学习起点。或者,如果您是 ML 开发人员,但对 Javascript 不熟悉,请继续阅读,了解有关浏览器内 ML 的新机遇的更多信息。在本博文中,我们将简要概述 TensorFlow.js 以及可以用来尝试它的入门资源。

浏览器内 ML

完全在浏览器中客户端运行机器学习程序会带来新的机会,比如交互式 ML!如果您正在观看 直播,了解 TensorFlow 开发者峰会,在 TensorFlow.js 演讲期间,您会发现一个演示,其中 @dsmilkov@nsthorat 训练了一个模型,使用计算机视觉和网络摄像头完全在浏览器中控制 PAC-MAN 游戏。您也可以使用下面的链接自己尝试一下 - 并在 示例 文件夹中找到源代码。
pacman webcam
将您的网络摄像头变成 PAC-MAN 的控制器 使用神经网络.
如果您想尝试另一个游戏,请尝试 Emoji 寻宝游戏 - 这次,从手机浏览器中。
Emoji 寻宝游戏 是另一个使用 TensorFlow.js 构建的应用程序的有趣示例。尝试使用您的手机,并找到源代码 这里.
在浏览器中运行 ML 意味着从用户的角度来看,无需安装任何库或驱动程序。只需打开一个网页,您的程序就可以运行了。此外,它可以与 GPU 加速一起运行。TensorFlow.js 自动支持 WebGL,并且在有 GPU 可用时会在幕后加速您的代码。用户还可以从移动设备打开您的网页,在这种情况下,您的模型可以利用传感器数据,比如来自陀螺仪或加速度计的数据。最后,所有数据都保留在客户端,这使得 TensorFlow.js 适用于低延迟推理以及隐私保护应用程序。

您可以使用 TensorFlow.js 做什么?

如果您正在使用 TensorFlow.js 进行开发,您可以考虑以下三种工作流程。
  • 您可以导入现有的预训练模型进行推理。如果您有一个现有的 TensorFlow 或 Keras 模型,您之前已离线训练过,则可以将其转换为 TensorFlow.js 格式,并将其加载到浏览器中进行推理。
  • 您可以重新训练导入的模型。就像上面的 Pac-Man 演示一样,您可以使用迁移学习来增强使用离线训练的现有模型,使用少量在浏览器中收集的数据(使用一种称为图像重新训练的技术)。这是一种快速训练准确模型的方法,只需少量数据即可。
  • 直接在浏览器中创建模型。您也可以使用 TensorFlow.js 完全在浏览器中定义、训练和运行模型,使用 Javascript 和高级层 API。如果您熟悉 Keras,高级层 API 应该很熟悉。

让我们看看一些代码

如果您愿意,可以直接前往 示例教程 以开始使用。这些内容展示了如何导出在 Python 中定义的模型以便在浏览器中进行推理,以及如何完全在 Javascript 中定义和训练模型。作为简要预览,这里有一段代码片段,它定义了一个神经网络来对花卉进行分类,与 TensorFlow.org 上的入门 指南 类似。在这里,我们将使用一系列层来定义模型。
import * as tf from ‘@tensorflow/tfjs’;
const model = tf.sequential();
model.add(tf.layers.dense({inputShape: [4], units: 100}));
model.add(tf.layers.dense({units: 4}));
model.compile({loss: ‘categoricalCrossentropy’, optimizer: ‘sgd’});
我们在这里使用的层 API 支持示例 目录 中找到的所有 Keras 层(包括 Dense、CNN、LSTM 等)。然后,我们可以使用与 Keras 兼容的 API 使用方法调用来训练我们的模型
await model.fit(
  xData, yData, {
    batchSize: batchSize,
    epochs: epochs
});
该模型现在已准备好用来进行预测
// Get measurements for a new flower to generate a prediction
// The first argument is the data, and the second is the shape.
const inputData = tf.tensor2d([[4.8, 3.0, 1.4, 0.1]], [1, 4]);

// Get the highest confidence prediction from our model
const result = model.predict(inputData);
const winner = irisClasses[result.argMax().dataSync()[0]];

// Display the winner
console.log(winner);
TensorFlow.js 还包括一个低级 API(以前称为 deeplearn.js)和对 渴望执行 的支持。您可以通过观看 TensorFlow 开发者峰会上的演讲来了解有关这些内容的更多信息。 TensorFlow.js API 的概述。TensorFlow.js 由 WebGL 提供支持,并提供高级层 API 用于定义模型,以及用于线性代数和自动微分的低级 API。TensorFlow.js 支持导入 TensorFlow SavedModels 和 Keras 模型。

TensorFlow.js 与 deeplearn.js 有什么关系?

好问题!TensorFlow.js 是一个 JavaScript 机器学习工具生态系统,是 deeplearn.js 的继承者,现在称为 TensorFlow.js Core。TensorFlow.js 还包括一个 Layers API,这是一个用于构建使用 Core 的机器学习模型的更高级别的库,以及用于自动移植 TensorFlow SavedModels 和 Keras hdf5 模型的工具。有关此类更多问题的答案,请查看 常见问题解答.

哪里可以找到最佳学习资源?

要了解有关 TensorFlow.js 的更多信息,请访问项目 主页,查看 教程,并尝试 示例。您还可以观看 2018 年 TensorFlow 开发者峰会上的演讲,并在 Twitter 上关注 TensorFlow。要了解有关 TensorFlow.js 的更多信息,请访问项目 主页,查看 教程,并尝试 示例。您还可以观看 2018 年 TensorFlow 开发者峰会上的演讲,并在 Twitter 上关注 TensorFlow。
来自加州山景城现场直播!加入 TensorFlow 团队,他们将举办第二届年度 TensorFlow 开发者峰会。所有会议都将被录制并上传到频道。
感谢您的阅读,我们很高兴看到您将使用 TensorFlow.js 创建什么!如果您愿意,可以关注 TensorFlow.js 团队的 @dsmilkov@nsthorat@sqcai,在 Twitter 上获取最新信息。
下一篇文章
Introducing TensorFlow.js: Machine Learning in Javascript

- 作者:Josh GordonSara Robinson,开发者倡导者

我们很高兴地推出 TensorFlow.js,这是一个开源库,您可以使用它来完全在浏览器中定义、训练和运行机器学习模型,使用 Javascript 和高级层 API。如果您是 Javascript 开发人员,但对 ML 并不熟悉,TensorFlow.js 是一个很好的学习起点。或者,如果您是 ML 开发人员,但对 Javascript 不熟悉,请继续阅读,了解有关浏览器内 ML 的新机遇的更多信息。在本博文中,我们将简要概述 TensorFlow.js 以及可以用来尝试它的入门资源。