首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TensorFlow 发布支持JavaScript语言的TensorFlow.js框架!

导读:3月 30 日,谷歌 TenosrFlow 开发者峰会 2018 在美国加州石景山开幕,发布了面向 JavaScript 的TensorFlow.js深度学习框架 !同时还发布了TensorFlow Extended和支持Swift语言的TensorFlow for Swift(四月份开源)。

TensorFlow.js 是 JavaScript 开发者的一个新的机器学习框架,它可以完全在浏览器里定义和训练模型,还可以导入离线训练的 TensorFlow 和 Keras 模型进行预测,并可以对 WebGL 实现无缝支持。

在浏览器中使用 TensorFlow.js 进行机器学习开启了令人兴奋的新的可能性,包括交互式机器学习,还有一些所有数据都保存在客户端的使用场景。例如, Emoji 寻宝游戏就是使用 TensorFlow.js 构建的应用程序。

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]

Variable 主要用于在模型训练过程中保存和更新值。

Operations:Tensor 可以用于保存数据,而 Operation(Op)则可用于操作数据。TensorFlow.js 提供了多种适用于张量的线性代数和机器学习运算的 Op。由于 Tensor 是不可改变的,这些 Op 不会改变它们的值,而会返回新的 Tensor。这些运算不仅包含 add、sub 和 mul 等二元运算,同时还包括 square 等一元运算:

const e = tf.tensor2d([[1.0, 2.0], [3.0, 4.0]]);

const f = tf.tensor2d([[5.0, 6.0], [7.0, 8.0]]);

const e_plus_f = e.add(f);

e_plus_f.print();

// Output: [[6 , 8 ],

// [10, 12]]

const d = tf.tensor2d([[1.0, 2.0], [3.0, 4.0]]);

const d_squared = d.square();

d_squared.print();

// Output: [[1, 4 ],

// [9, 16]]

模型和层:从概念上说,一个模型就是一个函数,给定输入之后生成所需要的输出。在 Tensorflow.js 有两种创建模型的方式:直接使用 Op 表示模型的运算。或者使用高级 API tf.model 来构建以层定义的模型,这在深度学习中是很常用的抽象形式。其实除了以上的特征,Tensorflow.js 还有一些很重要的核心概念,例如内存管理、神经网络基本运算和训练过程等。但了解以上概念就能轻松在浏览器中构建出简单的机器学习模型,如下展示了简单线性回归的定义方法:

import * as tf from '@tensorflow/tfjs';

// Define a model for linear regression.

const model = tf.sequential();

model.add(tf.layers.dense());

// Prepare the model for training: Specify the loss and the optimizer.

model.compile();

// Generate some synthetic data for training.

const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);

const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);

// Train the model using the data.

model.fit(xs, ys).then(() => {

// Use the model to do inference on a data point the model hasn't seen before:

model.predict(tf.tensor2d([5], [1, 1])).print();

});

TensorFlow.js介绍:https://js.tensorflow.org/

另外,推出的 TensorFlow Extended (TFX)是一个机器学习平台,可让开发者准备数据、训练、验证,并把训练好的模型快速部署在生产环境中提供可用的服务。

还有,TensorFlow for Swift将在四月份开源,感兴趣的同学可以关注:https://www.tensorflow.org/community/swift

-马上学习AI挑战百万年薪-

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180401A0EE8R00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券