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

cover_002.png

機器學習模型可以簡單理解函數,接受一個輸入然后經過函數得到一個輸出的算法。當使用神經網絡時,那么神經網絡就是是模型還是算法,個人因為應該算算法。神經網絡大家可以將其理解為復雜的模型,這個模型有大量參數,所以需要一定算力而且神經網絡求解過程是簡單暴力的。

定義模型

我們先把這次分享完成代碼拋出了,然后逐行解釋

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)
截屏2021-06-25下午12.36.54.png
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容