理論上,只要訓練樣本足夠多,神經網路可以擬合原始資料分布。
遇到神經網路不收斂問題,可以
(1)先檢查下輸入資料(歸一化,資料量);
(2)然後,檢查模型優化方法(學習率,優化器(優先adam這些自適應學習率));
(3)最後是,檢查模型結構設計(模型是否太簡單,已經擬合好資料了,設計更深的網路看loss能否再下降;)等等,歡迎補充。
0.1
~0.0001
.不同模型不同任務最優的lr都不一樣。
比如像 relu 啟用函式,如果學習率過大,會導致一些單元函式值小於0,不可恢復地「致死」,因為後續反向傳播這些單元的梯度都會等於0!
q: 我現在越來越不明白tensorflow了,我設定訓練次數很大的時候,它一開始就給我「收斂」到乙個值,後面的值都一樣?
a: 模型batch_size設定問題?網路過擬合了?
一般需要事先對資料進行 歸一化、標準化。歸一化是把數值壓縮到0~1,比如減去最小值,再除以最大值與最小值之差。標準化是,壓縮到乙個分布, 比如 每列減去 該列的均值,然後每列除於該列的標準差,獲得標準正態分佈。
python sklearn 的standardscaler
可以實現標準化。
首先,確保資料打亂(shuffle),(資料不打亂,網路極大可能擬合前面幾個batch的樣本分佈);然後,確保 標籤 y與loss是搭配的,比如,分類模型的交叉熵 cross entropy,pytorch中target是類別,不需要one-hot,模型輸出是logit,不需要softmax;keras和tensorflow的cross entropy可能會不一樣,還得看具體的api定義。
在分類中,常用交叉熵損失函式,一定要注意真實標籤的維度,比如,要求標籤是2維的[[0,1,0],[0,0,1]]
,是否傳入1維,如[1,2]
.
這個需要在官網確認api的輸入格式。
pytorch 的損失函式loss function.
參考:深度學習收斂問題;
訓練深度神經網路
神經網路模型
神經網路往往不需要人為的構造資料特徵,因為乙個神經元就可以看做是原始資料的不同特徵的組合,在神經元數目足夠大,層數足夠多的情況下,是很容易準確的進行分類的.神經網路是由具有適應性的簡單單元組成的廣泛並行互連的網路,它的組織能夠模擬生物神經系統對真實世界物體所做出的互動反應 神經元模型 m p神經元模...
怎麼看神經網路過早收斂 你的神經網路真的收斂了麼?
1 為什麼小模型的作為backbone效果會差?在深度學習目標檢測 影象分割 領域,我們發現當我們使用層數越深,並且在imagenet上表現越好的分類網路作為backbone時,它的檢測和分割效果越好效果越好。比如我們使用resnet101作為backbone時候,faster rcnn在coco2...
神經網路語言模型
基於計數的n gram語言模型 出現的問題 1 資料稀疏,有些資料未出現過 2 忽略語義的相關性,如 無聊 與 枯燥 雖然語義相似,但無法共享資訊。詞語表示為 one hot表示法。基於分布式表示的n gram語言模型 出現的問題 1 詞向量 如何將每個詞對映到實數向量空間中的乙個點 2 f函式的設...