[問題]nntool執行BPN解預測運算
我要用Matbla裡的nntool建構一個BPN network求解預測問題
遇到一些問題,請各位先進指導
>求解問題說明
一個製程品質的預測問題,希望由輸入項8個變數預測輸出項3項變數,求解預測值。
>事前自學的參考資料
1.ANN&BPN 手上有好幾本跟找了一些網路上的論文資料看,主要是看葉怡誠(儒林)跟張斐章(滄海)這兩本。
2.Matblab主要是參考羅強華(高立圖書)這本
>不懂要發問的問題
Q1:在念ANN跟BPN的時後,原先沒有使用動量的情形下有學習速率這個參數。但是nntool裡我找不到有設定學習速率的地方。
Q2:網路訓練完以後,要再做測試。用測試後誤差最小的網路來做預測網路。誤差會用MSE跟MPE分別計算。但是調整不同網路參數後的測試結果並不會呈現出來。看起來是要自行依Test的誤差值去計算?該怎去得到MSE跟MPE?
Q2:執行ANN的目地,主要是要做預測。我有兩組指定的參數組合,要用測試後最佳的網路去做預測,如何得到預測值? 想到的方法是在Q2的步驟裡做完測試後,再做一次Testing,但是輸入資料改成指定的參數組合,但不輸入Testing Target(因為未知),但是感覺邏輯有誤的是,這樣執行還是可以得到誤差值,但Targets既然未知,也就沒法加上誤差值得到model的預測值。
以下是我執行BPN的相關設定,感謝各位前輩協助!
>MATLAB版本
2011b
>資料
Training 48筆資料 (輸入資料格式8*48,輸出資料格式3*48)
Testing 24筆資料 (輸入資料格式8*48,輸出資料格式3*24)
>做法
1.先在Excel裡把資料做正規化,然後用轉置的方式存在excel後,貼到
MATLAB裡定義四個變數
Training_Input:訓練網路時的輸入資料
Training_Target:訓練網路時的輸出資料目標(實驗的實際值做為訓練目標)
Testing_Input:網路測試時的輸入資料
Testing_Target:網路測試時的輸出資料
2.執行nntool
用import把上個步驟裡的四個變數分別定義到input/target資料
3.Create Network,設定如下
Name:network1
Network Type:free-forward backprop
Input data:由自定義變數Training_Input輸入
Target data:由自定義變數Training_Target輸入
Training function:TRAINLM (內定)
Adaption learning function:LEARNGDM(內定)
Performance function:MSE(內定)
Number of layer:2 (一層隱藏層+一層輸出層)
Properties for :Layer1(隱藏層設定)
Number of neuron:6 (欲解的預測問題是8個輸入變數,3個輸出變數,所以用(8+3)/2=5.5取6)
Transfer Function:LOGSIG
Properties for :Layer2(輸出層設定)
Transfer Function:LOGSIG
4.接著點選network1用open打開設定BPN設定細項
Train'Training Data
Inputs:點選自定義變數Training_Input
Targets:點選自定義變數Training_Target
Train'Training Parameters維持原設定,
mu=0.001 (內定)
Mu_dec=0.1(內定)
Mu_inc=10(內定)
執行訓練,得到結果
Epoch=15 iterations
Performance =0.224
Gradient = 0.0293
Mu=0.001
Validation Checs= 6
Simulate'Simulation Data
Inputs:點選自定義變數Testing_Input
Supply Targets勾選後,Targets點選自定義變數Testing_TARGETS
右邊Outputs變更輸出檔名為TE,按右下Simulate Network執行網路測試
--
年輕人的感受特別強,他們就像一棵小樹
身上若被刻一刀,刀痕會隨著樹的成長而更加深刻.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 111.254.240.248