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

TensorFlow 数据混洗

在模型训练前,必须对数据集执行混洗操作。

在模型训练过程中,数据会被划分为若干批次(batch)并逐批次输入模型。数据混洗(data shuffling)是确保训练效果的关键步骤,它能有效防止模型重复接收相同数据,避免因数据顺序导致的训练偏差(training bias),从而提升模型的泛化能力。

通过混洗操作,可以保证每个训练批次都能覆盖数据分布的不同区域,使模型学习到更全面、更具代表性的特征。若未进行混洗,模型可能会因重复接触相同数据样本而陷入局部最优,无法输出准确结果。

tf.util.shuffle(data);

TensorFlow 张量

使用 TensorFlow 时,需将输入数据转换为张量数据:

// 将特征值 x 映射为张量输入
const inputs = values.map(obj => obj.x);
// 将标签值 y 映射为张量标签
const labels = values.map(obj => obj.y);

// 将输入数据和标签转换为二维张量
const inputTensor = tf.tensor2d(inputs, [inputs.length, 1]);
const labelTensor = tf.tensor2d(labels, [labels.length, 1]);

数据标准化

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

对于数值型数据,采用最小-最大归一化(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 章节
32 阅读
0 评论