量化app哪個最好?
目前國內最常用的ap軟件有兩個,分別是恒生PTrad
如何更好地調試神經網絡?
聲明:本文適合神經網絡初學者。
神經網絡的調試比大多數程序更難,因為大多數bug不會導致運行錯誤,只會導致不好的收斂。可能有許多看似模糊的錯誤消息:
性能錯誤:您的神經網絡沒有訓練好(性能:您的神經網絡沒有訓練好)。
如果你有經驗,你應該知道這意味著代碼需要大的改變。
第一,對付南?在大多數情況下,NaN錯誤發生在前100次迭代中,原因很簡單:你的學習率太高了。當學習率很高時,在前100次迭代中會出現NaN錯誤。使用系數3來降低學習率,直到前100次迭代不再出現NaN錯誤。一旦這樣做了,你將會有一個非常好的學習速度。根據我的經驗,最好的學習率是你得到NaN錯誤的范圍的十分之一。
如果在100次迭代后遇到NaN錯誤,有兩個常見原因。
如果你正在使用RNN,確保你正在使用梯度下降,并糾正它。用L2正則化梯度。RNN在訓練初期似乎有一個梯度,10%以下批次有學習高峰,此時梯度幅度相當高。如果不切割梯度,這些峰將產生NaN。
如果寫自定義網絡層,很有可能NaN是除以0造成的。另一個已知會產生Nan誤差的層是Softmax層。Softmax計算包括分子和分母的exp(x)運算,可以將無窮大除以無窮大,得到NaN。確保使用穩定的Softmax實現。
第二,神經網絡可以不學?一旦你沒有NaN誤差,你的神經網絡可以平滑運行上千次迭代,也不會減少前幾百次迭代后的訓練損失。當你第一次構建代碼庫時,你最好不要使用2000次迭代。這并不是因為所有的網絡都可以從少于2000次的迭代中學習。相反,從一開始就對網絡進行編碼很可能會有bug,在達到高迭代次數之前,您會希望過早地對其進行調試。現在的目標是一次又一次地縮小問題的范圍,直到你得到一個在2000次迭代下訓練出來的網絡。幸運的是,有兩種方法可以降低復雜性。
將訓練集的大小減少到10個實例。在數百次迭代中,在這10個實例中,神經網絡通常出現過擬合。許多編碼錯誤不會導致過擬合。如果你的網絡沒有。;不要過度適應10個示例的訓練集,請確保您使用的數據標記正確。將批次大小減少到1,以檢查批次計算錯誤。將打印語句添加到代碼中,以確保輸出與您的期望一致。通常可以通過上面介紹的純蠻力找出錯誤。一旦可以在10個實例上訓練網絡,就可以嘗試在100個實例上訓練它。如果這種方常工作,但效果不是很好,可以嘗試以下方法。
解決你感興趣的最簡單的問題。如果要翻譯句子,可以先建立一個特定語言的語言模型。如果你已經完成了,試著用三個單詞預測第一個翻譯的單詞。如果要檢測圖像中的物體,可以在訓練回歸網絡之前對圖像中的物體數量進行分類。在網絡可以解決的棘手問題和使用最少的時間為代碼獲取適當的數據之間有一個權衡。這是發揮你創造力的時候了。
將神經網絡應用到其他新場景的技巧就是合理使用上面介紹的兩個步驟。這是一種協調機制,效果不錯。首先,你表明這個神經網絡至少能記住幾個例子。然后這個神經網絡可以推廣到更簡單問題的驗證集。你在穩步前進的同時也在慢慢增加難度。It沒有卡帕西專家第一次使用的風格,但至少它是有效的。有時候你會遇到難題,你會的發現2000次迭代就不再繼續學習了。那個太棒了!但是迭代次數很少是這個問題之前復雜度的10倍。如果您發現是這種情況,請嘗試搜索中等復雜程度。
第三,調整參數。現在你的網絡可以學習東西,你可能會忘乎所以。你可能還會發現你訓練的網絡可以不能解決大多數復雜的問題。超參數調整是解決問題的關鍵。有些人直接下載CNN軟件包并在他們的數據集上運行,然后告訴你使用超參數調整并不沒什么區別。這是因為他們使用現有的架構來解決現有的問題。如果你想解決的問題需要一個新的架構,就需要通過超參數調整來得到一個好的設置。你d最好確定你已經看了你要解決的問題的超參數教程,不過我下面會列出一些基本思路。
可視化:唐不要害怕在培訓期間花時間編寫定制的可視化工具。如果你的可視化方法不。;如果行不通,考慮另一種方法。
權重初始化:一般來說,較大的初始化權重是一個不錯的選擇,但是過大會導致NaN。
確保重量看起來"健康"。為了理解這意味著什么,我建議在IPython的筆記本。花點時間觀察在標準數據集(如ImageNet或PennTreeBank)上訓練的成熟網絡中組件權重的直方圖應該是什么樣子。
神經網絡的w.r.t輸入不是常數,特別是用SGD代替其他方法時,因為SGD不是一種尺度不變的方法。花時間以其他擴展輸入數據和輸出標簽。
在訓練中降低學習率幾乎總能給你帶來進步。最佳衰減策略通常是:K次迭代后,每N次迭代用1.5kgtn除學習率。
使用參數配置文件,雖然把參數放到代碼里是可以的,但是如果要嘗試不同的值會比較麻煩。我將參數放在一個JSON文件中,并用一個命令導入它們。確切的格式并不重要。唐不要輕易重構代碼,因為重載超參數更麻煩!重構會引入bug,會延長訓練周期,在你得到喜歡的網絡之前是可以避免的。
更多優質內容,請持續關注鎂客網~~