chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于訓(xùn)練神經(jīng)網(wǎng)絡(luò)的37個小建議!

電子工程師 ? 來源: AI公園 ? 作者:Slav Ivanov ronghuai ? 2021-04-08 09:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

這個網(wǎng)絡(luò)在過去12個小時中一直在進行訓(xùn)練。一切看起來都很好:梯度在流動,損失在降低。但是接下來的預(yù)測結(jié)果是:所有都是0,所有都是背景,沒有檢測到任何東西?!拔易鲥e了什么?”—我問我的電腦,電腦沒睬我。

你從哪里開始檢查你的模型是否正在輸出垃圾(例如預(yù)測所有輸出的平均值,或者它的準確性非常差)?

由于一些原因,網(wǎng)絡(luò)可能不會進行訓(xùn)練。在許多調(diào)試的過程中,我經(jīng)常發(fā)現(xiàn)自己在執(zhí)行相同的檢查。我把我的經(jīng)驗和最好的想法整理在這個方便的列表里。我希望它們對你也有用。

如何使用這個指南?

很多事情都可能出錯。但其中一些更有可能出現(xiàn)問題。我通常以這張簡短的清單作為緊急第一反應(yīng):

從一個已知對這類數(shù)據(jù)有效的簡單模型開始(例如,圖像的VGG)。如果可能的話,使用標準的損失。關(guān)閉所有花哨的功能,例如正則化和數(shù)據(jù)擴充。如果對模型進行finetune,請仔細檢查預(yù)處理,因為預(yù)處理應(yīng)該與原始模型的訓(xùn)練相同。驗證輸入數(shù)據(jù)是否正確。

從一個很小的數(shù)據(jù)集(2-20個樣本)開始。對其進行過擬合,并逐漸添加更多數(shù)據(jù)。

開始逐步添加所有遺漏的部分:增強/正則化,自定義損失函數(shù),嘗試更復(fù)雜的模型。

如果上面的步驟沒有什么用,那么就從下面的列表開始,逐一驗證。

一 . 數(shù)據(jù)集的問題

1. 檢查你的輸入數(shù)據(jù)

檢查你正在向網(wǎng)絡(luò)提供的輸入數(shù)據(jù)是否有意義。例如,我不止一次地搞混了圖像的寬度和高度。有時,我會不小心把輸入全部搞成了0?;蛘呶視磸?fù)的使用相同batch。因此,打印/顯示兩個batch的輸入和目標輸出,并確保它們是正確的。

2. 嘗試隨機的輸入

嘗試傳遞隨機數(shù)而不是實際數(shù)據(jù),看看錯誤的現(xiàn)象是否相同。如果是的話,這是一個確定的信號,表明你的網(wǎng)絡(luò)在某個時候正在把數(shù)據(jù)變成垃圾。試著一層一層地調(diào)試看看哪里出錯了。

3. 檢查你的數(shù)據(jù)加載

你的數(shù)據(jù)可能沒有問題,但是將輸入傳遞到網(wǎng)絡(luò)的代碼可能會有問題。在任何操作之前打印第一層的輸入并檢查它。

4. 確保輸入連接到了輸出

檢查一些輸入樣本的標簽是否正確。還要確保對輸入樣本的變換對輸出標簽的作用是相同的。

5. 輸入和輸出之間的關(guān)系是不是太隨機了?

也許輸入和輸出之間關(guān)系的非隨機部分與隨機部分相比太小了(有人可能會說股票價格是這樣的)。也就是說,輸入與輸出的關(guān)系并不充分。由于這取決于數(shù)據(jù)的性質(zhì),因此沒有一種通用的方法來檢測這一點。

6. 數(shù)據(jù)集中是否有太多的噪聲?

有一次,當(dāng)我從一個食品網(wǎng)站上抓取圖像數(shù)據(jù)集時,這種情況發(fā)生在我身上。有太多不好的標簽,網(wǎng)絡(luò)無法學(xué)習(xí)。手動檢查一些輸入樣本,看看標簽是不是正確。

噪聲的截止點有待討論,因為本文在使用50%損壞標簽的MNIST上獲得了超過50%的準確性。

7. 打亂數(shù)據(jù)集

如果你的數(shù)據(jù)集沒有被打亂,并且有一個特定的順序(按標簽排序),這可能會對學(xué)習(xí)產(chǎn)生負面的影響。打亂你的數(shù)據(jù)集,以避免這種情況。確保你在進行打亂的時候,是把輸入和標簽一起打亂的。

8. 減少類別的不均衡

每一個類別B的圖像就有1000個類別A的圖像?你可能需要平衡損失函數(shù)或嘗試其他類別不平衡的方法。

9. 你有足夠的訓(xùn)練樣本嗎?

如果你正在從頭開始訓(xùn)練一個網(wǎng)絡(luò),你可能需要大量的數(shù)據(jù)。對于圖像分類,人們說每個類需要1000個或更多的圖像。

10. 確保你的batch里不只包含同一個標簽

這可能發(fā)生在排過序的數(shù)據(jù)集中(即前10k個樣本包含相同的類)。通過打亂數(shù)據(jù)集很容易修復(fù)。

11. 減少batch size

這篇文章指出大的batch size會降低模型的泛化能力。

附加1. 使用標準的數(shù)據(jù)集(如mnist, cifar10 )

在測試新網(wǎng)絡(luò)架構(gòu)或編寫新代碼時,首先使用標準數(shù)據(jù)集,而不是你自己的數(shù)據(jù)。 這是因為這些數(shù)據(jù)集有很多參考結(jié)果,而且它們被證明是“可解的”。 不會出現(xiàn)標簽噪聲、訓(xùn)練/測試分布差異、數(shù)據(jù)集難度過大等問題。

II . 數(shù)據(jù)歸一化/增強

12. 特征標準化

你是否標準化了你的輸入使其均值和單位方差為零?

13. 你是不是用了太多的數(shù)據(jù)增強?

增強具有規(guī)律性的效果。太多的這些與其他形式的正則化(權(quán)值的L2,dropout等等)結(jié)合在一起會導(dǎo)致網(wǎng)絡(luò)欠擬合。

14. 檢查你的預(yù)訓(xùn)練模型的預(yù)處理

如果你使用的是預(yù)訓(xùn)練模型,請確保你使用的歸一化和預(yù)處理與訓(xùn)練時的模型相同。例如,圖像像素應(yīng)該在[0,1]、[- 1,1]還是[0,255]范圍內(nèi)?

15. 檢查訓(xùn)練/驗證/測試集的預(yù)處理

CS231n指出了一個常見的陷阱:

“……任何預(yù)處理統(tǒng)計數(shù)據(jù)(例如數(shù)據(jù)平均值)必須僅對訓(xùn)練數(shù)據(jù)進行計算,然后應(yīng)用于驗證/測試數(shù)據(jù)。” 例如,計算平均值并從整個數(shù)據(jù)集中的每幅圖像中減去它,然后將數(shù)據(jù)分割為train/val/test分割是錯誤的。"

同時,檢查每個樣本或batch的預(yù)處理的不同之處。

III . 實現(xiàn)中的問題

16.嘗試解決這個問題的更簡單的版本的問題

這將有助于找到問題所在。例如,如果目標輸出是物體的類別和坐標,請嘗試只預(yù)測物體的類別。

17.看看“隨機”時候的正確的損失

再次來自優(yōu)秀的CS231n:使用小參數(shù)進行初始化,沒有正則化。例如,如果我們有10個類,在隨機的情況下意味著我們將有10%的時候會得到正確的類,Softmax損失是正確類的概率的負對數(shù),因此:-ln(0.1) = 2.302.

在此之后,試著增加正則化強度,這會增加損失。

18. 檢查你的損失函數(shù)

如果你實現(xiàn)了自己的loss函數(shù),那么檢查它的bug并添加單元測試。通常,我自己寫的損失可能是不正確的,并以一種微妙的方式損害了網(wǎng)絡(luò)的性能。

19. 驗證損失的輸入

如果你使用的是框架提供的loss函數(shù),請確保你傳遞給它的是它所期望的。例如,在PyTorch中,我會混淆NLLLoss和CrossEntropyLoss,因為前者需要softmax輸入,而后者不需要。

20. 調(diào)整損失的權(quán)重

如果你的損失由幾個較小的損失函數(shù)組成,請確保它們相對于每個損失函數(shù)的大小是正確的。這可能涉及測試不同的損失權(quán)重組合。

21. 使用其他的度量方法進行監(jiān)控

有時候,損失并不能很好地預(yù)測你的網(wǎng)絡(luò)是否訓(xùn)練的好。如果可以,使用其他指標,如準確性。

22. 測試所有的自定義的層

你自己實現(xiàn)了網(wǎng)絡(luò)中的一些層嗎?反復(fù)檢查以確保它們按照預(yù)期工作。

23. 檢查“凍結(jié)”的層和變量

檢查你是否無意中禁用了一些層/變量的梯度的更新。

24. 增加網(wǎng)絡(luò)的大小

也許你的網(wǎng)絡(luò)的表達能力不足以得到目標函數(shù)。嘗試在全連接的層中添加更多的層或更多的隱藏單元。

25. 檢查隱藏維度的錯誤

如果你的輸入看起來像(k, H, W) =(64, 64, 64)那么很容易忽略與錯誤維度相關(guān)的錯誤。對輸入維度使用奇怪的數(shù)字(例如,每個維度使用不同的素數(shù)),并檢查它們?nèi)绾卧诰W(wǎng)絡(luò)中傳播。

26. 梯度檢查

如果你手動實現(xiàn)梯度下降,檢查梯度,確保你的反向傳播工作正常。

IV. 訓(xùn)練問題

27. 處理小數(shù)據(jù)集

過擬合數(shù)據(jù)的一個子集,并確保它能工作。例如,用一兩個樣本來訓(xùn)練,看看你的網(wǎng)絡(luò)是否能學(xué)會區(qū)分它們。再繼續(xù)使用每個類的更多樣本。

28. 檢查權(quán)值初始化

如果不確定的話,使用Xavier或He初始化。另外,初始化可能會導(dǎo)致錯誤的局部最小值,所以嘗試不同的初始化,看看是否有幫助。

29. 改變你的超參數(shù)

也許你使用了一組特別糟糕的超參數(shù)。如果可行,嘗試網(wǎng)格搜索。

30. 減少正則化

過多的正則化會導(dǎo)致網(wǎng)絡(luò)嚴重欠擬合。減少正規(guī)化,如dropout、、權(quán)重/偏置L2正規(guī)化等。在優(yōu)秀的“Practical Deep Learning for coders”課程中,Jeremy Howard建議首先擺脫欠擬合。這意味著你需要對訓(xùn)練數(shù)據(jù)進行充分的過擬合,然后再解決過擬合問題。

31. 多給點時間

也許你的網(wǎng)絡(luò)需要更多的時間來訓(xùn)練,才能開始做出有意義的預(yù)測。如果你的損失在穩(wěn)步減少,那就讓它繼續(xù)訓(xùn)練吧。

32. 從訓(xùn)練模式切換到測試模式

有些框架具有Batch Norm、drop等層,在訓(xùn)練和測試期間的行為有所不同。切換到適當(dāng)?shù)哪J娇赡苡兄谀愕木W(wǎng)絡(luò)進行正確的預(yù)測。

33. 訓(xùn)練可視化

監(jiān)控每一層的激活值、權(quán)重和更新。確保它們大小匹配。例如,參數(shù)更新的大小(權(quán)重和偏差)應(yīng)該是1-e3。

考慮一個可視化庫,比如Tensorboard和Crayon。必要時,你還可以打印權(quán)重/偏置/激活值。

尋找平均值比0大得多的層激活。嘗試 Batch Norm或ELUs。

Deeplearning4j指出在權(quán)重和偏差直方圖中應(yīng)該能看到:
對于權(quán)值,這些直方圖在一段時間后應(yīng)該有一個近似的高斯分布。 對于偏置,這些直方圖通常從0開始,通常以近似高斯分布結(jié)束(LSTM是一個例外)。 注意那些發(fā)散到+/-∞的參數(shù)。留意那些變得很大的偏置。 如果類的分布非常不平衡,這種情況有時會發(fā)生在分類的輸出層。

檢查層的更新,他們應(yīng)該是一個高斯分布。

34. 嘗試不同的優(yōu)化器

你選擇的優(yōu)化器不應(yīng)該會導(dǎo)致你的網(wǎng)絡(luò)不訓(xùn)練,除非你選擇了特別糟糕的超參數(shù)。然而,對于一個任務(wù),適當(dāng)?shù)膬?yōu)化器可以幫助在最短的時間內(nèi)獲得最多的訓(xùn)練。你正在使用的算法的論文中應(yīng)該會指定優(yōu)化器。如果不是,我傾向于使用Adam或使用動量的SGD。

查看Sebastian Ruder的excellent post了解更多關(guān)于梯度下降優(yōu)化器的信息。

35. 梯度爆炸/消失

檢查層的更新,因為很大的值可以導(dǎo)致梯度爆炸。梯度剪裁可能會有所幫助。

檢查層的激活。來自Deeplearning4j的是一條很好的指導(dǎo)方針:“一個好的激活值的標準差在0.5到2.0之間。顯著地超出這個范圍可能意味著激活值的消失或爆炸”

36. 增大/降低學(xué)習(xí)率

較低的學(xué)習(xí)率會導(dǎo)致模型非常緩慢地收斂。

高學(xué)習(xí)率將在開始時迅速減少損失,但可能很難找到一個好的解決方案。

把你當(dāng)前的學(xué)習(xí)速度乘以0.1或10。

37. 克服NaNs

在訓(xùn)練RNN時,獲得NaN (Non-a-Number)是一個更大的問題。一些解決方法:

降低學(xué)習(xí)速率,特別是在前100次迭代中獲得NaNs時。

NaNs可以由除以0或ln(0)或負數(shù)得到。

Russell Stewart有很多關(guān)于如何處理NaNs的建議()。

嘗試逐層評估你的網(wǎng)絡(luò),并查看NaNs出現(xiàn)在哪里。

英文原文:https://blog.slavv.com/37-reasons-why-your-neural-network-is-not-working...

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4814

    瀏覽量

    103495
  • AI
    AI
    +關(guān)注

    關(guān)注

    88

    文章

    35041

    瀏覽量

    279111
  • rnn
    rnn
    +關(guān)注

    關(guān)注

    0

    文章

    89

    瀏覽量

    7103
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    無刷電機小波神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)子位置檢測方法的研究

    摘要:論文通過對無刷電機數(shù)學(xué)模型的推導(dǎo),得出轉(zhuǎn)角:與三相相電壓之間存在映射關(guān)系,因此構(gòu)建了一以三相相電壓為輸人,轉(zhuǎn)角為輸出的小波神經(jīng)網(wǎng)絡(luò)來實現(xiàn)轉(zhuǎn)角預(yù)測,并采用改進遺傳算法來訓(xùn)練網(wǎng)絡(luò)結(jié)
    發(fā)表于 06-25 13:06

    基于FPGA搭建神經(jīng)網(wǎng)絡(luò)的步驟解析

    本文的目的是在一神經(jīng)網(wǎng)絡(luò)已經(jīng)通過python或者MATLAB訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型,將訓(xùn)練好的模型的權(quán)重和偏置文件以TXT文件格式導(dǎo)出,然后
    的頭像 發(fā)表于 06-03 15:51 ?382次閱讀
    基于FPGA搭建<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>的步驟解析

    BP神經(jīng)網(wǎng)絡(luò)的調(diào)參技巧與建議

    BP神經(jīng)網(wǎng)絡(luò)的調(diào)參是一復(fù)雜且關(guān)鍵的過程,涉及多個超參數(shù)的優(yōu)化和調(diào)整。以下是一些主要的調(diào)參技巧與建議: 一、學(xué)習(xí)率(Learning Rate) 重要性 :學(xué)習(xí)率是BP神經(jīng)網(wǎng)絡(luò)中最重要
    的頭像 發(fā)表于 02-12 16:38 ?802次閱讀

    BP神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)的比較

    BP神經(jīng)網(wǎng)絡(luò)與卷積神經(jīng)網(wǎng)絡(luò)在多個方面存在顯著差異,以下是對兩者的比較: 一、結(jié)構(gòu)特點 BP神經(jīng)網(wǎng)絡(luò) : BP神經(jīng)網(wǎng)絡(luò)是一種多層的前饋神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 02-12 15:53 ?646次閱讀

    BP神經(jīng)網(wǎng)絡(luò)的優(yōu)缺點分析

    自學(xué)習(xí)能力 : BP神經(jīng)網(wǎng)絡(luò)能夠通過訓(xùn)練數(shù)據(jù)自動調(diào)整網(wǎng)絡(luò)參數(shù),實現(xiàn)對輸入數(shù)據(jù)的分類、回歸等任務(wù),無需人工進行復(fù)雜的特征工程。 泛化能力強 : BP神經(jīng)網(wǎng)絡(luò)通過
    的頭像 發(fā)表于 02-12 15:36 ?905次閱讀

    什么是BP神經(jīng)網(wǎng)絡(luò)的反向傳播算法

    BP神經(jīng)網(wǎng)絡(luò)的反向傳播算法(Backpropagation Algorithm)是一種用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)的有效方法。以下是關(guān)于BP神經(jīng)網(wǎng)絡(luò)的反
    的頭像 發(fā)表于 02-12 15:18 ?757次閱讀

    BP神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí)的關(guān)系

    ),是一種多層前饋神經(jīng)網(wǎng)絡(luò),它通過反向傳播算法進行訓(xùn)練。BP神經(jīng)網(wǎng)絡(luò)由輸入層、一或多個隱藏層和輸出層組成,通過逐層遞減的方式調(diào)整網(wǎng)絡(luò)權(quán)重,
    的頭像 發(fā)表于 02-12 15:15 ?846次閱讀

    如何訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)模型

    BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)是一種經(jīng)典的人工神經(jīng)網(wǎng)絡(luò)模型,其訓(xùn)練過程主要分為兩階段:前向傳播和反向傳播。以下是訓(xùn)練BP
    的頭像 發(fā)表于 02-12 15:10 ?892次閱讀

    人工神經(jīng)網(wǎng)絡(luò)的原理和多種神經(jīng)網(wǎng)絡(luò)架構(gòu)方法

    在上一篇文章中,我們介紹了傳統(tǒng)機器學(xué)習(xí)的基礎(chǔ)知識和多種算法。在本文中,我們會介紹人工神經(jīng)網(wǎng)絡(luò)的原理和多種神經(jīng)網(wǎng)絡(luò)架構(gòu)方法,供各位老師選擇。 01 人工神經(jīng)網(wǎng)絡(luò) ? 人工神經(jīng)網(wǎng)絡(luò)模型之所
    的頭像 發(fā)表于 01-09 10:24 ?1177次閱讀
    人工<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>的原理和多種<b class='flag-5'>神經(jīng)網(wǎng)絡(luò)</b>架構(gòu)方法

    卷積神經(jīng)網(wǎng)絡(luò)與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的比較

    在深度學(xué)習(xí)領(lǐng)域,神經(jīng)網(wǎng)絡(luò)模型被廣泛應(yīng)用于各種任務(wù),如圖像識別、自然語言處理和游戲智能等。其中,卷積神經(jīng)網(wǎng)絡(luò)(CNNs)和傳統(tǒng)神經(jīng)網(wǎng)絡(luò)是兩種常見的模型。 1. 結(jié)構(gòu)差異 1.1 傳統(tǒng)神經(jīng)網(wǎng)絡(luò)
    的頭像 發(fā)表于 11-15 14:53 ?1848次閱讀

    LSTM神經(jīng)網(wǎng)絡(luò)訓(xùn)練數(shù)據(jù)準備方法

    LSTM(Long Short-Term Memory,長短期記憶)神經(jīng)網(wǎng)絡(luò)訓(xùn)練數(shù)據(jù)準備方法是一關(guān)鍵步驟,它直接影響到模型的性能和效果。以下是一些關(guān)于LSTM
    的頭像 發(fā)表于 11-13 10:08 ?2093次閱讀

    關(guān)于卷積神經(jīng)網(wǎng)絡(luò),這些概念你厘清了么~

    必須通過決策閾值做出決定。 另一區(qū)別是AI并不依賴固定的規(guī)則,而是要經(jīng)過訓(xùn)練。訓(xùn)練過程需要將大量貓的圖像展示給神經(jīng)網(wǎng)絡(luò)以供其學(xué)習(xí)。最終,神經(jīng)網(wǎng)絡(luò)
    發(fā)表于 10-24 13:56

    如何構(gòu)建多層神經(jīng)網(wǎng)絡(luò)

    構(gòu)建多層神經(jīng)網(wǎng)絡(luò)(MLP, Multi-Layer Perceptron)模型是一在機器學(xué)習(xí)和深度學(xué)習(xí)領(lǐng)域廣泛使用的技術(shù),尤其在處理分類和回歸問題時。在本文中,我們將深入探討如何從頭開始構(gòu)建一多層
    的頭像 發(fā)表于 07-19 17:19 ?1545次閱讀

    Python自動訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)

    人工神經(jīng)網(wǎng)絡(luò)(ANN)是機器學(xué)習(xí)中一種重要的模型,它模仿了人腦神經(jīng)元的工作方式,通過多層節(jié)點(神經(jīng)元)之間的連接和權(quán)重調(diào)整來學(xué)習(xí)和解決問題。Python由于其強大的庫支持(如TensorFlow、PyTorch等),成為了實現(xiàn)和
    的頭像 發(fā)表于 07-19 11:54 ?692次閱讀

    神經(jīng)網(wǎng)絡(luò)專用硬件實現(xiàn)的方法和技術(shù)

    神經(jīng)網(wǎng)絡(luò)專用硬件實現(xiàn)是人工智能領(lǐng)域的一重要研究方向,旨在通過設(shè)計專門的硬件來加速神經(jīng)網(wǎng)絡(luò)訓(xùn)練和推理過程,提高計算效率和能效比。以下將詳細介紹神經(jīng)
    的頭像 發(fā)表于 07-15 10:47 ?2309次閱讀