更简单的机器学习方式!TensorFlow.js是ML新手的“绝佳”选择
TensorFlow.js是一个开源库,可以使用JavaScript和高级图层API在浏览器中完全定义、训练和运行机器学习模型。如果您是ML新手,那么TensorFlow.js是帮助您开始学习的好方式。或者,如果您是新接触JavaScript的ML开发人员,那么请继续阅读以了解更多关于浏览器内的ML。在这篇文章中我们将简要介绍TensorFlow.js。
浏览器内的ML
在浏览器中完全运行客户端的机器学习程序可以“解锁”新的惊喜,如交互式ML!如果您关注过TensorFlow开发者峰会的活动,在TensorFlow.js会议期间,您会发现一个演示,其中@dsmilkov和@nsthorat在浏览器中使用计算机视觉和网络摄像头训练模型以控制PAC-MAN游戏。
使用神经网络将您的摄像头变成PAC-MAN的控制器。
Emoji Scavenger Hunt是使用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定义和训练模型。作为一个快速预览,这里有一段代码片段,它定义了一个用于对花朵进行分类的神经网络。在这里,我们将使用图层来定义一个模型。
我们在此使用的图层API支持示例目录中的所有Keras图层(包括Dense,CNN,LSTM等)。 然后,我们可以使用与方法相适用的Keras兼容API来训练我们的模型:
该模型现在可以用来做出预测:
TensorFlow.js还包含低级API(以前称为deeplearn.js)和支持Eager执行。 您可以通过在TensorFlow开发者峰会上观看演讲了解更多。
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模型的工具。