月初TensorFlow开发者大会上,谷歌正式发布了TensorFlow的JS版本tensorflow.js,并演示了几个很有意思的demo,展现了浏览器环境下也能进行深度学习任务的能力。tensorflowjs利用WebGl加速,在浏览器环境下训练、部署机器学习模型。下面我尝试引入tensorflow.js并运行一个曲线拟合的例子。
1、文件形式引入
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.10.0"></script>
<script>
const model = tf.sequential();
model.add(tf.layers.dense({units: 1, inputShape: [1]}));
model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});
const x = tf.tensor2d([1, 2, 3, 4], [4, 1]);
const y = tf.tensor2d([1, 3, 5, 7], [4, 1]);
model.fit(x, y).then(() => {
model.predict(tf.tensor2d([5], [1, 1])).print();
});
</script>
首先调用tf.sequential()构建模型,损失函数为均方差,优化器为sgd(梯度下降)。待拟合的点序列为(1,1),(2,3),(3,5),(4,7),训练模型,输入x=5。
打开浏览器,输出为:
Tensor
[[8.1529675],]
2、使用webpack
npm install @tensorflow/tfjs
首先利用npm安装tensorflow.js(也可用yarn),新建index.js文件,内容如下。
import * as tf from '@tensorflow/tfjs';
const model = tf.sequential();
model.add(tf.layers.dense({units: 1, inputShape: [1]}));
model.compile({loss: 'meanSquaredError', optimizer: 'sgd'});
const xs = tf.tensor2d([1, 2, 3, 4], [4, 1]);
const ys = tf.tensor2d([1, 3, 5, 7], [4, 1]);
model.fit(xs, ys).then(() => {