TensorFlow 模型
TesorFlow.js
一个用于
训练和部署
机器学习模型的 JavaScript 库
在浏览器中

Tensorflow 模型
模型和层是机器学习中重要的构建块。
对于不同的机器学习任务,您必须将不同类型的层组合成一个模型,该模型可以使用数据进行训练以预测未来值。
TensorFlow.js 支持不同类型的模型和不同类型的层。
TensorFlow 模型是具有一个或多个层的神经网络。
一个 TensorFlow 项目
一个 TensorFlow 项目有这个典型的工作流程
- 收集数据
- 创建模型
- 向模型添加层
- 编译模型
- 训练模型
- 使用模型
示例
假设您知道一个定义直线的功能
Y = 1.2X + 5
那么您可以使用 JavaScript 公式计算任何 y 值
y = 1.2 * x + 5;
为了演示 TensorFlow.js,我们可以训练一个 TensorFlow.js 模型来根据 X 输入预测 Y 值。
TensorFlow 模型不知道这个函数。
// 创建训练数据
const xs = tf.tensor([0, 1, 2, 3, 4]);
const ys = xs.mul(1.2).add(5);
// 定义一个线性回归模型
const model = tf.sequential();
model.add(tf.layers.dense({units:1, inputShape:[1]}));
// 指定损失和优化器
model.compile({loss:'meanSquaredError', optimizer:'sgd'});
// 训练模型
model.fit(xs, ys, {epochs:500}).then(() => {myFunction()});
// 使用模型
function myFunction() {
const xArr = [];
const yArr = [];
for (let x = 0; x <= 10; x++) {
xArr.push(x);
let result = model.predict(tf.tensor([Number(x)]));
result.data().then(y => {
yArr.push(Number(y));
if (x == 10) {plot(xArr, yArr)};
});
}
}
下面的示例将解释此内容
收集数据
创建一个具有 5 个 x 值的张量 (xs)
const xs = tf.tensor([0, 1, 2, 3, 4]);
创建 5 个正确 y 答案的张量 (ys)(将 xs 乘以 1.2 并加 5)
const ys = xs.mul(1.2).add(5);
创建模型
创建一个顺序模型。.
const model = tf.sequential();
在一个顺序模型中,一个层的输出是下一个层的输入。
添加层
向模型添加一个密集层。
该层只有一个单元(张量),形状为 1(一维)
model.add(tf.layers.dense({units:1, inputShape:[1]}));
在密集层中,每个节点都连接到前一层中的每个节点。
编译模型
使用 meanSquaredError 作为损失函数和 sgd(随机梯度下降)作为优化器函数来编译模型
model.compile({loss:'meanSquaredError', optimizer:'sgd'});
Tensorflow 优化器
- Adadelta - 实现 Adadelta 算法。
- Adagrad - 实现 Adagrad 算法。
- Adam - 实现 Adam 算法。
- Adamax - 实现 Adamax 算法。
- Ftrl - 实现 FTRL 算法。
- Nadam - 实现 NAdam 算法。
- Optimizer - Keras 优化器的基类。
- RMSprop - 实现 RMSprop 算法。
- SGD - 随机梯度下降优化器。
训练模型
使用 xs 和 ys 训练模型,重复 500 次(epochs)
model.fit(xs, ys, {epochs:500}).then(() => {myFunction()});
使用模型
模型训练后,您可以将其用于许多不同的目的。
此示例在给定 10 个 x 值的情况下预测 10 个 y 值,并调用一个函数在图中绘制预测
function myFunction() {
const xArr = [];
const yArr = [];
for (let x = 0; x <= 10; x++) {
let result = model.predict(tf.tensor([Number(x)]));
result.data().then(y => {
xArr.push(x);
yArr.push(Number(y));
if (x == 10) {display(xArr, yArr)};
});
}
}
此示例在给定 10 个 x 值的情况下预测 10 个 y 值,并调用一个函数来显示这些值
function myFunction() {
const xArr = [];
const yArr = [];
for (let x = 0; x <= 10; x++) {
let result = model.predict(tf.tensor([Number(x)]));
result.data().then(y => {
xArr.push(x);
yArr.push(Number(y));
if (x == 10) {display(xArr, yArr)};
});
}
}