主题
  • 默认模式
  • 浅蓝色模式
  • 淡绿色模式
  • 深夜模式

TensorFlow 模型

TensorFlow.js 是一个基于 JavaScript 的机器学习库,支持在浏览器环境中直接训练和部署机器学习模型。

在机器学习中,模型(Models)和层(Layers)是核心的基础构建单元。

针对不同的机器学习任务,开发者需要将多种类型的神经网络层组合成一个可训练的模型,该模型能够通过数据学习并预测未来值。

TensorFlow.js 全面支持多种模型架构和神经网络层类型,为开发者提供灵活的机器学习构建模块。

在 TensorFlow 中,模型(Model)本质上是一个包含一个或多个神经网络层(Layers)的神经网络架构。

TensorFlow.js 机器学习模型


TensorFlow 项目

✅ TensorFlow 项目标准工作流程如下:

数据收集 → 创建模型 → 添加网络层 → 编译模型 → 训练模型 → 使用模型

步骤名称 英文术语 技术说明
数据收集 Collecting Data 获取原始数据集并进行预处理
创建模型 Creating a Model 初始化神经网络架构
添加网络层 Adding Layers 构建神经网络层次结构
编译模型 Compiling 配置优化器和损失函数
训练模型 Training 使用数据训练模型参数
使用模型 Using 进行预测或部署应用

TensorFlow 实例

✅ 假设已知一个定义直线的函数:y = 1.2x + 5,你可以使用 JavaScript 公式计算任意y值:

y = 1.2 * x + 5;

✅ 为演示 TensorFlow.js 的功能,我们可以训练一个 TensorFlow.js 模型,使其能够根据输入x值预测对应的y值:

实例代码 运行代码
复制
// 创建训练数据
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 xMax = 10;
  const xArr = [];
  const yArr = [];
  for (let x = 0; x <= xMax; x++) {
    let result = model.predict(tf.tensor([Number(x)]));
    result.data().then(y => {
      xArr.push(x);
      yArr.push(Number(y));
      if (x == xMax) {plot(xArr, yArr)};
    });
  }
}

下面是该示例的完整技术解析。


数据收集(Collecting Data)

✅ 创建包含 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);

创建模型(Creating a Model)

✅ 使用tf.sequential()方法,创建顺序模型:

const model = tf.sequential();

在顺序模型(Sequential Model)中,前一层的输出将自动作为下一层的输入。


添加网络层(Adding Layers)

为模型添加一个全连接层(Dense Layer)

✅ 该网络层配置为单神经元单元(输出张量维度为 1):

model.add(tf.layers.dense({units:1, inputShape:[1]}));

在全连接层(Dense Layer)中,每个神经元节点都与前一层的所有节点实现全互联。


编译模型(Compiling the Model)

✅ 使用均方误差(meanSquaredError)作为损失函数,随机梯度下降(sgd)作为优化器来编译模型:

model.compile({loss:'meanSquaredError', optimizer:'sgd'});

TensorFlow 优化器

优化器名称 实现算法 技术说明
Adadelta 实现 Adadelta 算法 自适应学习率方法,无需设置初始学习率,适合 RNN 训练
Adagrad 实现 Adagrad 算法 参数特定学习率,适合稀疏数据,内存占用较高
Adam 实现 Adam 算法 结合动量与 RMSProp,默认推荐优化器
Adamax 实现 Adamax 算法 Adam 的变体,使用无穷范数,对嵌入层效果更好
Ftrl 实现 FTRL 算法 Follow-the-Regularized-Leader,适合大规模线性模型
Nadam 实现 NAdam 算法 Adam 与 Nesterov 动量的结合
Optimizer Keras 优化器基类 所有优化器的抽象基类,可用于自定义优化器
RMSprop 实现 RMSprop 算法 自适应学习率,对循环神经网络效果显著
SGD 随机梯度下降优化器 基础优化器,可配置动量和学习率衰减

训练模型(Training the Model)

✅ 训练模型(使用 xs 和 ys 数据)并进行 500 次迭代(epochs):

model.fit(xs, ys, {epochs:500}).then(() => {myFunction()});

使用模型(Using the Model)

在模型训练完成之后,可以将其用做许多种不同的用途。

✅ 下面这个例子根据给定的 10 个x值预测出 10 个y值,并调用函数将预测结果绘制成图表:

实例代码 运行代码
复制
function myFunction() {
  const xMax = 10;
  const xArr = [];
  const yArr = [];
  for (let x = 0; x <= xMax; x++) {
    let result = model.predict(tf.tensor([Number(x)]));
    result.data().then(y => {
      xArr.push(x);
      yArr.push(Number(y));
      if (x == xMax) {plot(xArr, yArr)};
    });
  }
}

✅ 下面这个例子根据给定的 10 个x值预测出 10 个y值,并调用函数显示预测结果:

实例代码 运行代码
复制
function myFunction() {
  const xMax = 10;
  const xArr = [];
  const yArr = [];
  for (let x = 0; x <= xMax; x++) {
    let result = model.predict(tf.tensor([Number(x)]));
    result.data().then(y => {
      xArr.push(x);
      yArr.push(Number(y));
      if (x == xMax) {display(xArr, yArr)};
    });
  }
}


评论区 0
发表评论
教程介绍
机器学习是人工智能的子领域,通过算法让计算机从数据中自动学习规律,并做出预测或决策。
29 章节
28 阅读
0 评论