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)是用于量化模型预测值与真实值差异的核心损失函数。
反馈提交成功
感谢您的反馈,我们将尽快处理您的反馈