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 模型 = tf.sequence();
模型.添加(tf.layers.dense({单位:1,inputShape:[1]}));
// 指定损失和优化器
模型.编译({损失:'meanSquaredError',优化器:'sgd'});
// 训练模型
模型.fit(xs,ys,{epochs:500})。然后(()=> {myFunction()});
// 使用模型
函数 myFunction() {
const xArr = [];
const yArr = [];
对于(设 x = 0;x <= 10;x++){
xArr.推(x);
让结果 = 模型.预测 (tf.tensor ([Number (x)]));
结果.数据().then(y => {
yArr.推(Number(y));
如果 (x == 10) {绘图 (xArr, yArr)};
});
}
}
该示例解释如下:
收集数据
创建一个具有 5 个 x 值的张量 (xs):
const xs = tf.tensor([0, 1, 2, 3, 4]);
创建一个具有 5 个正确 y 答案的张量 (ys)(将 xs 乘以 1.2 并加 5):
复制代码
创建模型
创建顺序模式:
const 模型 = tf.sequence();
在顺序模型中,一层的输出是下一层的输入。
添加图层
向模型添加一个密集层。
该层只有一个单位(张量),形状为 1(一维):
模型.添加(tf.layers.dense({单位:1,inputShape:[1]}));
在密集层中,每个节点都与前一层的每个节点相连。
编译模型
使用 meanSquaredError 作为损失函数并使用 sgd(随机梯度下降)作为优化函数来编译模型:
模型.编译({损失:'meanSquaredError',优化器:'sgd'});
Tensorflow 优化器
- Adadelta-实现Adadelta算法。
- Adagrad-实现Adagrad算法。
- Adam- 实现 Adam 算法。
- Adamax-实现Adamax算法。
- Ftrl-实现FTRL算法。
- Nadam——实现NAdam算法。
- 优化器——Keras 优化器的基类。
- RMSprop-实现RMSprop算法。
- SGD——随机梯度下降优化器。
训练模型
使用 xs 和 ys 对模型进行 500 次重复(epoch)训练:
模型.fit(xs,ys,{epochs:500})。然后(()=> {myFunction()});
使用模型
模型训练完成后,您可以将其用于许多不同的目的。
此示例根据 10 个 x 值预测 10 个 y 值,并调用函数在图形中绘制预测结果:
函数 myFunction() {
const xArr = [];
const yArr = [];
对于(设 x = 0;x <= 10;x++){
让结果 = 模型.预测 (tf.tensor ([Number (x)]));
结果.数据().then(y => {
xArr.推(x);
yArr.推(Number(y));
如果 (x == 10) {显示 (xArr,yArr)};
});
}
}
此示例根据 10 个 x 值预测 10 个 y 值,并调用函数显示这些值:
函数 myFunction() {
const xArr = [];
const yArr = [];
对于(设 x = 0;x <= 10;x++){
让结果 = 模型.预测 (tf.tensor ([Number (x)]));
结果.数据().then(y => {
xArr.推(x);
yArr.推(Number(y));
如果 (x == 10) {显示 (xArr,yArr)};
});
}
}