瀏覽器端的機器學(xué)習(xí) tensorflowjs(4) 定義模型

cover_002.png

機器學(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)
截屏2021-06-25下午12.36.54.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容