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

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

定義模型

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

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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章