機器學習模型可以簡單理解函數,接受一個輸入然後經過函數得到一個輸出的算法。當使用神經網絡時,那麼神經網絡就是是模型還是算法,個人因爲應該算算法。神經網絡大家可以將其理解爲複雜的模型,這個模型有大量參數,所以需要一定算力而且神經網絡求解過程是簡單暴力的。
定義模型
我們先把這次分享完成代碼拋出了,然後逐行解釋
function createModel() {
// Create a sequential model
const model = tf.sequential();
// Add a single input layer
model.add(tf.layers.dense({inputShape: [1], units: 1, useBias: true}));
// Add an output layer
model.add(tf.layers.dense({units: 1, useBias: true}));
return model;
}
初始化一個容器
const model = tf.sequential();
這實例化了一個 tf.Model對象,sequential 有點類似一個容器,我們可以將神經網絡的層結構一層一層堆疊到容器,輸入的數據會經過這些層後輸出一個結果。
也存在多個輸入和輸出的模型,但在許多情況下,我們的模型將是順序執行的。
model.add(tf.layers.dense({inputShape: [1], units: 1, useBias: true}));
創建好容器後,我們就可以添加 layer
到的網絡中,它自動連接到一個有一個隱藏單元的密集層。
在 Tensorflow 提供事先定義好層,dense layer
全連接層是一種比較簡單,如果大家不瞭解,就可以將其簡單理解爲一個線性方程,y = wx + b, 不過因爲輸入一批樣本所以, w 通常爲一個矩陣(稱爲權重),輸入數據乘以矩陣 w 在加上一個偏置 b ,這裏 b 也是一個向量。這樣我們就定義好了網絡的第一層。
在解釋一下參數 inputShape,因爲數據只有一個特徵作爲輸入所以 inputShape是[1]。
units
設定了該層中的權重矩陣的大小,它設置爲1,表示每個數據的輸入特徵是 1 所以只有 1 個權重。
提示:全連接層默認帶有一個偏置項,默認情況下 useBias 的值爲 true
model.add(tf.layers.dense({units: 1}));
其實這一層是神經網絡的輸出層,units
設置爲 1,輸出 1 個數值。
提示:隱藏層有 1 個單元,實際上沒有必要添加最終的輸出層,也就是說可以把隱藏層作爲輸出層。然而,定義一個輸出層可以讓以後可以修改隱藏層的單元數,僅此而已。
實例化
// Create the model
const model = createModel();
tfvis.show.modelSummary({name: 'Model Summary'}, model)