什么是线性回归
- 利用数理统计中回归分析,来确定两种或两种以上变量间想相互依赖的定量关系的一种统计分析方法
- 例子:身高体重预测,房价预测
操作步骤
- 准备 可视化训练数据
- 使用tensorflow.js 的API构建神经网络
- 训练模型并预测
前置条件
- 最新版本的chrome或者其他现代浏览器
- 基础的前端 神经网络等预备知识
准备可视化数据
- 准备线性回归训练数据
-
使用tfvis可视化训练数据
image.png
image.png
这是通过训练数据通过可视化展示出来,通过大量数据训练,以及线性回归的规律,就可以测试 相对应x对应y的轴。
定义模型结构:单层单个神经元组成的神经网络
- 初始化一个神经网络模型;
- 为神经网络模型添加层;
-
设计层的神经元个数和inputShape
image.png
损失函数:均方误差(MSE)
-
根据Google机器学习速成教程理解函数与均方误差。
image.png 在tensorflow中设置损失函数
//神经元个数和inputShape
const model = tf.sequential()
model.add(tf.layers.dense({ units: 1, inputShape: [1] }))
// 设置损失函数
model.compile({
loss: tf.losses.meanSquaredError,
optimizer: tf.train.sgd(0.1)
})
优化器:随机梯度下降(SGD)
-
跟着Google机器学习速成教程理解优化器和随机梯度下降。
image.png 在tensorflow中设置优化器
model.compile({
loss: tf.losses.meanSquaredError,
optimizer: tf.train.sgd(0.1) //优化器中的学习速率,先默认为0.1,在训练的时候,再去调节
})
训练模型,并可视化训练过程
- 将训练数据转化为 Tensor 投喂给模型
- 训练模型
- 使用tfvis 可视化训练过程
const inputs = tf.tensor(xs)
const labels = tf.tensor(ys)
await model.fit(inputs, labels, {
batchSize: 4,
epochs: 200,
callbacks: tfvis.show.fitCallbacks({ name: '训练过程' }, ['loss'])
})
这里需要调整的参数 batchSize和 epochs 以及优化器中 tf.train.sgd(0.1) 如何调整到一个合适的位置,需要不断训练尝试,切需要设置合适的学习速率,才能更快更好降低损失,找到黄金点。
image.png