示例 1 模型
打亂資料
在訓練之前務必打亂資料。
當一個模型被訓練時,資料被分成小份(批次)。每批資料都會被輸入到模型中。打亂資料對於防止模型重複接觸相同的資料非常重要。如果兩次使用相同的資料,模型將無法泛化資料並給出正確的輸出。打亂資料可以提供更好的批次內資料多樣性。
示例
tf.util.shuffle(data);
TensorFlow 張量
要使用 TensorFlow,輸入資料需要被轉換為張量資料
// 將 x 值對映到 Tensor 輸入
const inputs = values.map(obj => obj.x);
// 將 y 值對映到 Tensor 標籤
const labels = values.map(obj => obj.y);
// 將輸入和標籤轉換為二維張量
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));
Tensorflow 模型
機器學習模型是一個產生輸出的演算法,它以輸入為基礎。
此示例使用 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}));
順序 ML 模型
const model = tf.sequential(); 建立一個順序 ML 模型。
在順序模型中,輸入直接流向輸出。其他模型可以有多個輸入和多個輸出。順序模型是最簡單的 ML 模型。它允許您逐層構建模型,其權重與下一層對應。
TensorFlow 層
model.add() 用於向模型新增兩個層。
tf.layer.dense 是一種在大多數情況下都適用的層型別。它將輸入乘以一個權重矩陣,並向結果新增一個數字(偏差)。
形狀和單元
inputShape: [1] 因為我們有 1 個輸入(x = horsepower)。
units: 1 定義了權重矩陣的大小:每個輸入(x 值)對應 1 個權重。
編譯模型
使用指定的最佳化器和損失函式來編譯模型
model.compile({loss: 'meanSquaredError', optimizer:'sgd'});
編譯器被設定為使用 sgd 最佳化器。它易於使用且相當有效。
meanSquaredError 是我們想要用來比較模型預測值和真實值的功能。