2014-12-01 83 views
1

我在C#中實現了Ng的OCR神經網絡示例。 我想我已經正確實現了所有的公式[矢量化版本],我的應用程序正在訓練網絡。神經網絡OCR - 參數需要幫助 - Coursera Ng的例子

有關如何查看我的網絡改進識別的任何建議 - 在完成培訓後不通過手動測試示例進行測試?我想看看我的訓練在訓練過程中的位置。

我測試了我繪製的數字上的訓練權重,所有神經元上的輸出非常相似(約0.077,或類似​​的...在所有神經元上),最大值在錯誤的神經元上。所以結果與繪製的圖像不匹配。

這是我做的迄今爲止唯一的測試:代價函數時代 enter image description here

所以,這是與成本函數(?有人稱之爲目標函數)在50個時代發生了什麼變化。 我的Lambda值設置爲3.0,學習率爲0.01,5000個示例,我在每個時期之後,即在那些5000個示例之後進行批量處理。激活函數:sigmoid。

輸入:400 隱藏:25 輸出:10

我不知道是什麼正確的價值觀是Lambda和學習速率,使我的網絡可以學習沒有過擬合或欠擬合。

任何建議如何找出我的網絡學習得很好?

此外,應畢竟這種訓練Ĵ成本函數有什麼價值? 它應該接近零?

我應該有更多的時代嗎?

這樣做不好,我的例子都可以通過數字排序?

任何幫助表示讚賞。

回答

1

Q:任何建議如何找出我的網絡是學習呢?
A:將數據拆分爲三組培訓,交叉驗證和測試。用測試數據驗證結果。這實際上是在後面的過程中的地址。

問題:另外,J費用函數應具備什麼樣的價值?它應該接近零?
A:我記得在作業吳提到什麼是期望值。正則化成本不應該爲零,因爲它包含所有權重的總和。

Q:我應該有更多的時代?
一個:如果你運行你的程序足夠長(?不少於20分鐘),你會看到成本是不是越來越小,我認爲它達到了局部/全局最優所以多個時期就沒有必要。

Q:難道我的例子都是按數字排序嗎?
A:該算法修改每個示例的權重,因此不同的數據順序確實會影響批處理中的每個步驟。但最終的結果應該沒有太大的區別。

+0

非常感謝。我絕對需要將我的例子分解爲簡歷和測試。我在最後做了一些測試,但我意識到這還不夠(測試集的大小太小而看不到任何東西)。 – JunJun 2014-12-02 08:33:38

+0

我希望你能告訴我:prof.Ng爲log.regress使用了J cost函數。繪製數據(誤差)還是二次方程(y-h(X))^ 2?我只知道那個測試和簡歷錯誤不應該正規化。 – JunJun 2014-12-02 08:54:49

+1

吳教授使用了對數代價函數(交叉熵)。我記得他從來沒有在他的演講中使用二次成本。 – zfy 2014-12-02 23:07:08