NN2Simulink:把網路轉成 Simulink 模型
老師錄製的操作示範:把上一頁訓練好的 AND 感知器(NnetAnd.mat)轉成 Simulink 模型,結果為 NetAndmdl.mdl。
▶ 在 Colab 開啟原課程的 MATLAB 程式已改寫成 Python 筆記本(第 6 節 NetAndmdl.mdl 的方塊),可以直接在瀏覽器執行、修改參數。⬇ 下載 NN.ipynb
產生的模型 Generated Model
(以下讀取附檔整理,為補充)Neural Network Toolbox 的 gensim 函數可以把網路物件產生成 Simulink 方塊。NetAndmdl.mdl 的方塊都引用工具箱的 neural 方塊庫,結構一層層展開如下:
| 層次 | 方塊 | 內容 |
|---|---|---|
| 最上層 | p{1}(常數)→ Neural Network → y{1}(Scope) | 輸入是常數 [0.95; 0.23] |
| Neural Network | p{1} → Layer 1 → y{1} | 只有一層 |
| Layer 1 | Delays 1、IW{1,1}、b{1}、netsum、hardlim | 輸入權值方塊 IW{1,1} 內是常數 [2; 1] 與 dotprod 方塊;b{1} 是常數 −3;netsum 把兩者相加後送進 hardlim |
模型的輸入 \([0.95;\ 0.23]\) 的淨輸入為 \(2 \times 0.95 + 0.23 - 3 = -0.87 < 0\),所以 Scope 上的輸出是 0:點 (0.95, 0.23) 雖然很接近 (1, 0),但它不是 (1, 1),AND 的結果為 0(見上一頁圖中的橘色叉號)。
模型的方塊對應到網路的運算:dotprod 方塊算 \(\mathbf{Wp}\),netsum 方塊再加上 b,hardlim 方塊輸出 \(a\)。這也說明了建立感知器頁的編註:加偏權值的是 netsum,不是 dotprod。
網路轉成 Simulink 方塊後,就能和受控體模型接在一起模擬,例如把訓練好的網路當成控制器或系統模型。倒傳遞網路的附檔 NetBpmdl.mdl 也是同樣的做法。