示例 2 模型

随机播放数据

总是在训练前打乱数据。

当模型被训练时,数据被分成小的集合(批次)。 然后将每批输入模型。 洗牌对于防止模型再次获得相同的数据很重要。 如果两次使用相同的数据,模型将无法泛化数据并给出正确的输出。 洗牌在每批中提供了更好的数据种类。

实例

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 的 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 行来定义 ML 模型

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(); 创建一个顺序机器学习模型

在顺序模型中,输入直接流向输出。 其他模型可以有多个输入和多个输出。 Sequential 是最简单的 ML 模型。 它允许您逐层构建模型,权重对应于下一层。

TensorFlow 层

model.add()用于给模型添加两层。

tf.layer.dense 是一种适用于大多数情况的图层类型。 它将输入乘以权重矩阵,然后在结果中添加一个数字(偏差)。

形状和单位

inputShape: [1] 因为我们有 1 个输入(x = 房间)。

units: 1 定义权重矩阵的大小: 每个输入 1 个权重(x 值)。


编译模型

使用指定的优化器loss函数编译模型:

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

编译器设置为使用 sgd 优化器。 它使用简单,非常有效。

meanSquaredError 是我们想要用来比较模型预测和真实值的函数。