TensorFlow.js发布:使用JS进行机器学习并在浏览器中运行

AiTechYun

编辑:yuxiangyu

TensorFlow官方团队近日发布多个重大更新,其中包括:为python开发者提供的,可以立即评估操作并且无需额外图形构建步骤的eager execution;可以促进机器学习模型可重用部分的发布、发现和使用的TensorFlow Hub;针对移动和嵌入式设备的轻量级解决方案TensorFlow Lite;Swift的TensorFlow开源;面向JavaScript开发者的新机器学习框架TensorFlow.js!

介绍

TensorFlow.js是为JavaScript开发者准备的开源库,可以使用JavaScript和高级图层API完全在浏览器中定义,训练和运行机器学习模型!如果你是一名机器学习新手,那么TensorFlow.js是开始学习的好方法。

浏览器内的机器学习

在浏览器中完全由客户端运行的机器学习程序将会解锁新的机会,如交互式机器学习!例如下方链接中的吃豆人游戏。

使用神经网络将你的摄像头变成PAC-MAN的控制器

如果你想尝试其他游戏,可以使用手机上的浏览器玩Emoji Scavenger Hunt。

从用户的角度来看,在浏览器中运行的ML意味着不需要安装任何库或驱动程序。只需打开网页,你的程序就可以运行了。此外,它已准备好使用GPU加速运行。TensorFlow.js自动支持WebGL,并在GPU可用时会加速代码。用户也可以通过移动设备打开你的网页,在这种情况下,模型可以利用传感器数据,例如陀螺仪或加速度传感器。最后,所有数据都保留在客户端上,使得TensorFlow.js可用于低延迟推理以及隐私保护程序。

你可以用TensorFlow.js做什么?

如果使用TensorFlow.js进行开发,可以考虑以下三种工作流程。

  • 你可以导入现有的预训练的模型进行推理。如果你有一个现成的TensorFlow或Keras模型,则可以将其转换为TensorFlow.js格式,并将其加载到浏览器中进行推理。
  • 你可以导入的模型进行再训练。就像上面的吃豆人演示一样,你可以使用迁移学习来增强现有预训练好的离线模型(使用在浏览器中收集的少量数据),使用的技术称为图像再训练(Image Retraining)。这是只使用少量数据,快速训练准确模型的一种方法。
  • 直接在浏览器中创作模型。你还可以使用TensorFlow.js,完全在浏览器中使用Javascript和高级层API定义,训练和运行模型。如果你熟悉Keras,那么高级层API应该也会很熟悉。

让我们看看代码

如果你愿意,可以直接到示例或教程开始。

示例:https://github.com/tensorflow/tfjs-examples

教程:http://js.tensorflow.org/

以下内容展示了如何在浏览器中导出用Python定义的模型进行推理,以及如何完全用Javascript定义和训练模型。这是定义一个神经网络来对花朵进行分类的代码片段,就像在TensorFlow.org的入门指南中一样(也就是说分类鸢尾花)。在这里我使用一堆层定义一个模型。

import * as tffrom ‘@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-compatible API来训练我们的模型:

await model.fit(
  xData, yData, {
    batchSize: batchSize,
    epochs: epochs
});

这个模型现在可以用来做预测了:

// Get measurementsfor a new flower to generate a prediction
// The first argumentis the data,and the secondis the shape.
const inputData= tf.tensor2d([[4.8,3.0,1.4,0.1]], [1,4]);
// Get the highest confidence predictionfrom 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)并支持Eager execution。

TensorFlow.js API

TensorFlow.js如何与deeplearn.js关联?

TensorFlow.js属于JavaScript生态系统,实现其进行机器学习的工具,继承自deeplearn.js(即TensorFlow.js Core)。TensorFlow.js还包含一个Layers API,它是使用Core构建机器学习模型的高级库,并且也是用于自动移植TensorFlow SavedModels和Keras hdf5模型的工具。

原文发布于微信公众号 - ATYUN订阅号(atyun_com)

原文发表时间:2018-04-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏瓜大三哥

基于FPGA的Canny算子设计(二)

滞后阈值分割电路设计 滞后阈值需要两个阈值:一种方法是可以根据所要提取的图片,提前定好这两个阈值;另一种方式是采用自动阈值法(如大律法)。这里采用第一种方法。 ...

31560
来自专栏大数据文摘

干脆面君,你给我站住!你已经被TensorFlow盯上了

20230
来自专栏人工智能头条

张雨石:Adam - 大规模分布式机器学习框架

75470
来自专栏杨熹的专栏

详解 TensorBoard-如何调参

什么是 TensorBoard TensorBoard 是 TensorFlow 上一个非常酷的功能,我们都知道神经网络很多时候就像是个黑盒子,里面到底是什么样...

69280
来自专栏量子位

无需写代码!谷歌推出机器学习模型分析神器,代号What-If

今天,谷歌推出了已开源的TensorFlow可视化工具TensorBoard中一项新功能:What-If Tool,用户可在不编写程序代码的情况下分析机器学习(...

12930
来自专栏量子位

Keras 2正式发布,推出深度整合进TensorFlow的新API

允中 编译整理 量子位·QbitAI 出品 今天,深度学习框架Keras在博客上发表文章,介绍了深度整合进TensorFlow的内部版本tf.keras,以及...

35480
来自专栏AI研习社

可应用的目标检测代码来了,一秒锁定你

计算机视觉是人工智能的一个重要领域。计算机视觉是一门关于计算机和软件系统的科学,可以让计算机对图像及场景进行识别和理解。计算机视觉还包括图像识别、目标检测、图像...

10010
来自专栏ATYUN订阅号

C-SATS工程副总裁教你如何用TensorFlow分类图像 part1

最近在深度学习算法和硬件性能方面的最新进展使研究人员和公司在图像识别,语音识别,推荐引擎和机器翻译等领域取得了巨大的进步。六年前,首次机器在视觉模式识别方面的表...

35390
来自专栏ATYUN订阅号

人脸图像识别实例:使用Keras-MXNet在MXNet模型服务器上部署“笑脸检测器”

AWS最近宣布发布了针对Keras 2的Apache MXNet后端,与使用多GPU的默认后端相比,它可以为你提供高达3倍的速度提升。它可以改进训练和推理性能。...

21820
来自专栏吉浦迅科技

确认过的眼神:这是一份NVIDIA TensorRT 4.0的实战教程

NVIDIA TensorRT是一个高性能的深度学习推理优化器和runtime,为深度学习推理应用程序提供低延迟和高吞吐量。您可以从每个深度学习框架中导入经过训...

53620

扫码关注云+社区

领取腾讯云代金券