训练模型时,数据被分成小集(批次)。然后将每批数据输入模型。改组对于防止模型再次获取相同的数据非常重要。如果两次使用相同的数据,模型将无法概括数据并给出正确的输出。洗牌可以在每批中提供更好的数据种类。
tf.util.shuffle(data);
要使用TensorFlow,需要将输入数据转换为张量数据:
// Map x values to Tensor inputs
const inputs = values.map(obj => obj.x);
// Map y values to Tensor labels
const labels = values.map(obj => obj.y);
// Convert inputs and labels to 2d tensors
const inputTensor = tf.tensor2d(inputs, [inputs.length, 1]);
const labelTensor = tf.tensor2d(labels, [labels.length, 1]);
数据在用于神经网络之前应进行标准化。
使用最小值-最大值的 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));
机器学习模型是一种从输入产生输出的算法。
此示例使用 3 行来定义机器学习模型:
const model = tf.sequential();
model.add(tf.layers.dense({inputShape: [1], units: 1, useBias: true}));
model.add(tf.layers.dense({units: 1, useBias: true}));
const model = tf.sequential();创建一个序列机器学习模型。
在顺序模型中,输入直接流向输出。其他模型可以有多个输入和多个输出。顺序是最简单的 ML 模型。它允许您逐层构建模型,并使用与下一层相对应的权重。
model.add() 用于向模型添加两层。
tf.layer.dense是一种适用于大多数情况的图层类型。它将输入乘以权重矩阵,并向结果添加一个数字(偏差)。
inputShape: [1]因为我们有 1 个输入(x = 房间)。
units: 1定义权重矩阵的大小:每个输入(x 值)有 1 个权重。
编译指定的模型优化器和损失功能:
model.compile({loss: 'meanSquaredError', optimizer:'sgd'});
编译器设置为使用sgd优化器。它使用简单且非常有效。
meanSquaredError是我们要用来比较模型预测和真实值的函数。
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!