TensorFlow 模型
TesorFlow.js
一個用於
訓練和部署
機器學習模型的 JavaScript 庫
在瀏覽器中

Tensorflow 模型
模型和層是機器學習中重要的構建塊。
對於不同的機器學習任務,您必須將不同型別的層組合成一個模型,該模型可以使用資料進行訓練以預測未來值。
TensorFlow.js 支援不同型別的模型和不同型別的層。
TensorFlow 模型是具有一個或多個層的神經網路。
一個 TensorFlow 專案
一個 TensorFlow 專案有這個典型的工作流程
- 收集資料
- 建立模型
- 向模型新增層
- 編譯模型
- 訓練模型
- 使用模型
示例
假設您知道一個定義直線的功能
Y = 1.2X + 5
那麼您可以使用 JavaScript 公式計算任何 y 值
y = 1.2 * x + 5;
為了演示 TensorFlow.js,我們可以訓練一個 TensorFlow.js 模型來根據 X 輸入預測 Y 值。
TensorFlow 模型不知道這個函式。
// 建立訓練資料
const xs = tf.tensor([0, 1, 2, 3, 4]);
const ys = xs.mul(1.2).add(5);
// 定義一個線性迴歸模型
const model = tf.sequential();
model.add(tf.layers.dense({units:1, inputShape:[1]}));
// 指定損失和最佳化器
model.compile({loss:'meanSquaredError', optimizer:'sgd'});
// 訓練模型
model.fit(xs, ys, {epochs:500}).then(() => {myFunction()});
// 使用模型
function myFunction() {
const xArr = [];
const yArr = [];
for (let x = 0; x <= 10; x++) {
xArr.push(x);
let result = model.predict(tf.tensor([Number(x)]));
result.data().then(y => {
yArr.push(Number(y));
if (x == 10) {plot(xArr, yArr)};
});
}
}
下面的示例將解釋此內容
收集資料
建立一個具有 5 個 x 值的張量 (xs)
const xs = tf.tensor([0, 1, 2, 3, 4]);
建立 5 個正確 y 答案的張量 (ys)(將 xs 乘以 1.2 並加 5)
const ys = xs.mul(1.2).add(5);
建立模型
建立一個順序模型。.
const model = tf.sequential();
在一個順序模型中,一個層的輸出是下一個層的輸入。
新增層
向模型新增一個密集層。
該層只有一個單元(張量),形狀為 1(一維)
model.add(tf.layers.dense({units:1, inputShape:[1]}));
在密集層中,每個節點都連線到前一層中的每個節點。
編譯模型
使用 meanSquaredError 作為損失函式和 sgd(隨機梯度下降)作為最佳化器函式來編譯模型
model.compile({loss:'meanSquaredError', optimizer:'sgd'});
Tensorflow 最佳化器
- Adadelta - 實現 Adadelta 演算法。
- Adagrad - 實現 Adagrad 演算法。
- Adam - 實現 Adam 演算法。
- Adamax - 實現 Adamax 演算法。
- Ftrl - 實現 FTRL 演算法。
- Nadam - 實現 NAdam 演算法。
- Optimizer - Keras 最佳化器的基類。
- RMSprop - 實現 RMSprop 演算法。
- SGD - 隨機梯度下降最佳化器。
訓練模型
使用 xs 和 ys 訓練模型,重複 500 次(epochs)
model.fit(xs, ys, {epochs:500}).then(() => {myFunction()});
使用模型
模型訓練後,您可以將其用於許多不同的目的。
此示例在給定 10 個 x 值的情況下預測 10 個 y 值,並呼叫一個函式在圖中繪製預測
function myFunction() {
const xArr = [];
const yArr = [];
for (let x = 0; x <= 10; x++) {
let result = model.predict(tf.tensor([Number(x)]));
result.data().then(y => {
xArr.push(x);
yArr.push(Number(y));
if (x == 10) {display(xArr, yArr)};
});
}
}
此示例在給定 10 個 x 值的情況下預測 10 個 y 值,並呼叫一個函式來顯示這些值
function myFunction() {
const xArr = [];
const yArr = [];
for (let x = 0; x <= 10; x++) {
let result = model.predict(tf.tensor([Number(x)]));
result.data().then(y => {
xArr.push(x);
yArr.push(Number(y));
if (x == 10) {display(xArr, yArr)};
});
}
}