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

训练函数(Training Function)

实例代码 运行代码
复制
async function trainModel(model, inputs, labels, surface) {
    // 训练参数配置
    const batchSize = 25;      // 批大小
    const epochs = 50;         // 训练轮次

    // 可视化回调配置(仅显示损失曲线)
    const callbacks = tfvis.show.fitCallbacks(
        surface,
        ['loss'],              // 监控指标
        {callbacks: ['onEpochEnd']}  // 触发时机
    );

    // 执行训练
    return await model.fit(inputs, labels, {
        batchSize,            // 自动批处理
        epochs,               // 迭代轮次
        shuffle: true,       // 启用数据混洗
        callbacks             // 挂载可视化回调
    });
}

关键参数说明:

参数 类型 作用
batchSize number 控制梯度更新频率(值越小 → 训练越精细但速度越慢)
shuffle boolean 防止数据顺序影响训练效果(自动内部实现混洗逻辑)
callbacks tf.Callback[] 通过tfvis实现实时损失曲线渲染(基于浏览器 GPU 加速)

模型测试

模型训练完成后,必须对其进行测试与评估。具体方法是通过检查模型对不同输入的预测结果来进行验证。

✅ 但在进行预测前,需先对数据进行反标准化处理:

// 生成均匀分布的测试输入 (0到1之间100个点)
let unX = tf.linspace(0, 1, 100);

// 模型预测 (需要调整输入形状为[100,1])
let unY = model.predict(unX.reshape([100, 1]));

// 对输入和输出进行反标准化
const unNormunX = unX.mul(inputMax.sub(inputMin)).add(inputMin);
const unNormunY = unY.mul(labelMax.sub(labelMin)).add(labelMin);

// 将张量转换为 JavaScript 数组
unX = unNormunX.dataSync();
unY = unNormunY.dataSync();

✅ 随后可对(反标准化后的)结果进行分析:

实例代码 运行代码
复制
const predicted = Array.from(unX).map((val, i) => {
    return {x: val, y: unY[i]}
});

// 绘制结果曲线
tfPlot([values, predicted], surface1)

数据标准化

数据需经标准化处理后,才能被使用在神经网络。

对于数值型数据,采用最小-最大归一化(Min-Max Scaling)将数据范围调整至 [0, 1] 区间通常最为适宜。

const inputMin = inputTensor.min();
const inputMax = inputTensor.max();
const labelMin = labelTensor.min();
const labelMax = labelTensor.max();
const nmInputs = inputTensor.sub(inputMin).div(inputMax.sub(inputMin));
const nmLabels = labelTensor.sub(labelMin).div(labelMax.sub(labelMin));

Tensorflow 模型

机器学习模型是通过算法实现从输入数据到输出结果的映射体系。

✅ 本示例通过三行代码完成机器学习模型定义:

const model = tf.sequential();
model.add(tf.layers.dense({inputShape: [1], units: 1, useBias: true}));
model.add(tf.layers.dense({units: 1, useBias: true}));

1. 顺序式机器学习模型(Sequential ML Model)

const model = tf.sequential(); 用于创建顺序式机器学习模型。

顺序式模型中,数据从输入层直接流向输出层。其他模型可能支持多输入/多输出结构。顺序式模型是最基础的机器学习模型结构,支持逐层堆叠构建,各层权重仅与下一层相关联。

2. TensorFlow 层(神经网络层组件)

model.add() 方法用于向模型添加两个神经网络层。

tf.layer.dense 是一种通用全连接层,其核心计算逻辑为:输入数据与权重矩阵相乘后叠加偏置项。

3. 张量形状与神经元单元数(Shapes and Units)

inputShape: [1] 表示输入维度为 1(对应单一特征:马力值x)。

units: 1 定义了权重矩阵的尺寸:每个输入特征(x值)对应 1 个权重参数。


模型编译(Compiling a Model)

✅ 编译模型时,可以使用指定的优化器和损失函数:

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

编译器配置为使用 SGD(随机梯度下降)优化器,该优化器实现简单且训练效果显著。

均方误差(Mean Squared Error,MSE)是用于量化模型预测值与真实值差异的核心损失函数。



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