什么是線性回歸
- 利用數(shù)理統(tǒng)計中回歸分析,來確定兩種或兩種以上變量間想相互依賴的定量關(guān)系的一種統(tǒng)計分析方法
- 例子:身高體重預測,房價預測
操作步驟
- 準備 可視化訓練數(shù)據(jù)
- 使用tensorflow.js 的API構(gòu)建神經(jīng)網(wǎng)絡(luò)
- 訓練模型并預測
前置條件
- 最新版本的chrome或者其他現(xiàn)代瀏覽器
- 基礎(chǔ)的前端 神經(jīng)網(wǎng)絡(luò)等預備知識
準備可視化數(shù)據(jù)
- 準備線性回歸訓練數(shù)據(jù)
-
使用tfvis可視化訓練數(shù)據(jù)
image.png
image.png
這是通過訓練數(shù)據(jù)通過可視化展示出來,通過大量數(shù)據(jù)訓練鹰服,以及線性回歸的規(guī)律专执,就可以測試 相對應(yīng)x對應(yīng)y的軸厘肮。
定義模型結(jié)構(gòu):單層單個神經(jīng)元組成的神經(jīng)網(wǎng)絡(luò)
- 初始化一個神經(jīng)網(wǎng)絡(luò)模型;
- 為神經(jīng)網(wǎng)絡(luò)模型添加層须鼎;
-
設(shè)計層的神經(jīng)元個數(shù)和inputShape
image.png
損失函數(shù):均方誤差(MSE)
-
根據(jù)Google機器學習速成教程理解函數(shù)與均方誤差诞外。
image.png 在tensorflow中設(shè)置損失函數(shù)
//神經(jīng)元個數(shù)和inputShape
const model = tf.sequential()
model.add(tf.layers.dense({ units: 1, inputShape: [1] }))
// 設(shè)置損失函數(shù)
model.compile({
loss: tf.losses.meanSquaredError,
optimizer: tf.train.sgd(0.1)
})
優(yōu)化器:隨機梯度下降(SGD)
-
跟著Google機器學習速成教程理解優(yōu)化器和隨機梯度下降澜沟。
image.png 在tensorflow中設(shè)置優(yōu)化器
model.compile({
loss: tf.losses.meanSquaredError,
optimizer: tf.train.sgd(0.1) //優(yōu)化器中的學習速率,先默認為0.1,在訓練的時候峡谊,再去調(diào)節(jié)
})
訓練模型倔喂,并可視化訓練過程
- 將訓練數(shù)據(jù)轉(zhuǎn)化為 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'])
})
這里需要調(diào)整的參數(shù) batchSize和 epochs 以及優(yōu)化器中 tf.train.sgd(0.1) 如何調(diào)整到一個合適的位置,需要不斷訓練嘗試靖苇,切需要設(shè)置合適的學習速率,才能更快更好降低損失班缰,找到黃金點贤壁。
image.png