导读: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挑战百万年薪-
领取专属 10元无门槛券
私享最新 技术干货