
機器學(xué)習(xí)模型可以簡單理解函數(shù),接受一個輸入然后經(jīng)過函數(shù)得到一個輸出的算法。當(dāng)使用神經(jīng)網(wǎng)絡(luò)時,那么神經(jīng)網(wǎng)絡(luò)就是是模型還是算法,個人因為應(yīng)該算算法。神經(jīng)網(wǎng)絡(luò)大家可以將其理解為復(fù)雜的模型,這個模型有大量參數(shù),所以需要一定算力而且神經(jīng)網(wǎng)絡(luò)求解過程是簡單暴力的。
定義模型
我們先把這次分享完成代碼拋出了,然后逐行解釋
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 有點類似一個容器,我們可以將神經(jīng)網(wǎng)絡(luò)的層結(jié)構(gòu)一層一層堆疊到容器,輸入的數(shù)據(jù)會經(jīng)過這些層后輸出一個結(jié)果。
也存在多個輸入和輸出的模型,但在許多情況下,我們的模型將是順序執(zhí)行的。
model.add(tf.layers.dense({inputShape: [1], units: 1, useBias: true}));
創(chuàng)建好容器后,我們就可以添加 layer 到的網(wǎng)絡(luò)中,它自動連接到一個有一個隱藏單元的密集層。
在 Tensorflow 提供事先定義好層,dense layer 全連接層是一種比較簡單,如果大家不了解,就可以將其簡單理解為一個線性方程,y = wx + b, 不過因為輸入一批樣本所以, w 通常為一個矩陣(稱為權(quán)重),輸入數(shù)據(jù)乘以矩陣 w 在加上一個偏置 b ,這里 b 也是一個向量。這樣我們就定義好了網(wǎng)絡(luò)的第一層。
在解釋一下參數(shù) inputShape,因為數(shù)據(jù)只有一個特征作為輸入所以 inputShape是[1]。
units 設(shè)定了該層中的權(quán)重矩陣的大小,它設(shè)置為1,表示每個數(shù)據(jù)的輸入特征是 1 所以只有 1 個權(quán)重。
提示:全連接層默認(rèn)帶有一個偏置項,默認(rèn)情況下 useBias 的值為 true
model.add(tf.layers.dense({units: 1}));
其實這一層是神經(jīng)網(wǎng)絡(luò)的輸出層,units 設(shè)置為 1,輸出 1 個數(shù)值。
提示:隱藏層有 1 個單元,實際上沒有必要添加最終的輸出層,也就是說可以把隱藏層作為輸出層。然而,定義一個輸出層可以讓以后可以修改隱藏層的單元數(shù),僅此而已。
實例化
// Create the model
const model = createModel();
tfvis.show.modelSummary({name: 'Model Summary'}, model)
