2

我想優化和驗證在Matlab上使用Netlab的神經網絡Netlab - 如何計算錯誤?

我想找到每個迭代的誤差值,所以我可以看到一個圖上的收斂。這可以通過存儲在命令窗口中的誤差,這是通過使用ERRLOGNETOPT輸出設定選項(1)到完成來完成。

然而,這些錯誤是不一樣的mlperr其給出的0.5 *(平方誤差的總和)爲最後一次迭代的誤差值。如果我不知道它們是如何計算的,我無法真正有效地使用它們。

有沒有人知道命令窗口中顯示的錯誤代表了什麼(我正在使用縮放共軛梯度作爲我的優化算法)?

對於網絡 運行的每個迭代,是否有一種方法來存儲mlperr

任何幫助非常感謝,非常感謝!

注: 我試圖做一些與此類似: ftp://ftp.dcs.shef.ac.uk/home/spc/com336/neural-lab-wk6.html

但是它給出不同的結果來運行具有以下選項(14)指定的迭代次數的網絡,而不是k代表某種原因。

+0

您可能需要發佈代碼示例才能獲得更多定向幫助。你嘗試了什麼?總之請創建一個[最小化,完整和可驗證的示例](http://stackoverflow.com/help/mcve) –

+1

我已經設法解決這個問題!通過netopt作爲錯誤日誌給出的錯誤確實與mlperr中給出的錯誤相同,然而一個是使用我的驗證集計算出來的,另一個是我的訓練集中的數據,它們有很多數據點,這些數據點可以解釋不同之處! – Archie

+0

如果你不介意的話,這將是很好的解決方案發布到你的問題作爲答案,這可能有助於在未來的人:) +1 –

回答

0

是肯定,

ERRLOG矢量,作爲輸出到網絡優化函數創建NETOPT使用以下語法

[NET, OPTIONS, ERRLOG] = netopt(NET, OPTIONS, X, T, ALG) 

ERRLOG的每一行給出0.5 * SSE (平方和誤差)用於網絡優化的對應迭代。計算預測輸出(y)和目標輸出(t)之間的誤差。

MLPERR功能所行的語法如下

E = mlperr(NET, X, T) 

它也給預測輸出(y)和目標輸出(T)之間的0.5 * SSE,但作爲網絡參數是恆定的(NET應被預先訓練),E是一個奇異值。

如果NETOPT用一個ERRLOG輸出運行,然後MLPERR用相同的網絡和變量運行,È應該是相同的值作爲ERRLOG(的最終行的值網絡優化的最終迭代之後的錯誤)。

希望這對某人有用!