日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

深度学习模型训练过程

發(fā)布時(shí)間:2023/11/28 生活经验 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习模型训练过程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

深度學(xué)習(xí)模型訓(xùn)練過程

一.數(shù)據(jù)準(zhǔn)備

  1. 基本原則:

1)數(shù)據(jù)標(biāo)注前的標(biāo)簽體系設(shè)定要合理

2)用于標(biāo)注的數(shù)據(jù)集需要無偏、全面、盡可能均衡

3)標(biāo)注過程要審核

  1. 整理數(shù)據(jù)集

1)將各個(gè)標(biāo)簽的數(shù)據(jù)放于不同的文件夾中,并統(tǒng)計(jì)各個(gè)標(biāo)簽的數(shù)目

2)樣本均衡,樣本不會(huì)絕對均衡,差不多就行了

3)切分樣本集

如:90%用于訓(xùn)練,10%留著測試,比例自己定。訓(xùn)練集合,對于弱勢類要重采樣,最后的圖片列表要shuffle;測試集合就不用重采樣了。

訓(xùn)練中要保證樣本均衡,學(xué)習(xí)到弱勢類的特征,測試過程要反應(yīng)真實(shí)的數(shù)據(jù)集分布。

4)按需要的格式生成tfrecord

按照train.list和validation.list生成需要的格式。生成和解析tfrecord的代碼要根據(jù)具體情況編寫。

二.基本步驟

  1. 定義算法公式,也就是神經(jīng)網(wǎng)絡(luò)的前向算法。我們一般使用現(xiàn)成的網(wǎng)絡(luò),如inceptionV4,mobilenet等。

  2. 定義loss,選擇優(yōu)化器,來讓loss最小

  3. 對數(shù)據(jù)進(jìn)行迭代訓(xùn)練,使loss到達(dá)最小

  4. 在測試集或者驗(yàn)證集上對準(zhǔn)確率進(jìn)行評估

三.訓(xùn)練

  1. 預(yù)處理,根據(jù)自己的喜好,編寫預(yù)處理策略。

preprocessing的方法,變換方案諸如:隨機(jī)裁剪、隨機(jī)變換框、添加光照飽和度、修改壓縮系數(shù)、各種縮放方案、多尺度等。進(jìn)而,減均值除方差或歸一化到[-1,1],將float類型的Tensor送入網(wǎng)絡(luò)。

這一步的目的是:讓網(wǎng)絡(luò)接受的訓(xùn)練樣本盡可能多樣,不要最后出現(xiàn)原圖沒問題,改改分辨率或?qū)捀弑染凸蛄说那闆r。

  1. 網(wǎng)絡(luò)設(shè)計(jì),基礎(chǔ)網(wǎng)絡(luò)的選擇和Loss的設(shè)計(jì)。

基礎(chǔ)網(wǎng)絡(luò)的選擇和問題的復(fù)雜程度息息相關(guān),用ResNet18可以解決的沒必要用101;還有一些SE、GN等模塊加上去有沒有提升也可以去嘗試。

Loss的設(shè)計(jì),一般問題的抽象就是設(shè)計(jì)Loss數(shù)據(jù)公式的過程。比如多任務(wù)中的各個(gè)任務(wù)權(quán)重配比,centor Loss可以讓特征分布更緊湊,SmoothL1Loss更平滑避免梯度爆炸等。

  1. 優(yōu)化算法

一般來說,只要時(shí)間足夠,Adam和SGD+Momentum可以達(dá)到的效果差異不大。用框架提供的理論上最好的優(yōu)化策略就是了。

  1. 訓(xùn)練過程

finetune網(wǎng)絡(luò),我習(xí)慣分兩步:首先訓(xùn)練fc層,迭代幾個(gè)epoch后保存模型;然后基于得到的模型,訓(xùn)練整個(gè)網(wǎng)絡(luò),一般迭代40-60個(gè)epoch可以得到穩(wěn)定的結(jié)果。total_loss會(huì)一直下降的,過程中可以評測下模型在測試集上的表現(xiàn)。真正的loss往往包括兩部分。后面total_loss的下降主要是正則項(xiàng)的功勞了。

四.難點(diǎn)

  1. 訓(xùn)練速度慢,收斂慢

深度學(xué)習(xí)其實(shí)就是一個(gè)反復(fù)調(diào)整模型參數(shù)的過程,得力于GPU等硬件性能的提升,使得復(fù)雜的深度學(xué)習(xí)訓(xùn)練成為了可能。收斂速度過慢,訓(xùn)練時(shí)間過長,一方面使得相同總訓(xùn)練時(shí)間內(nèi)的迭代次數(shù)變少,從而影響準(zhǔn)確率,另一方面使得訓(xùn)練次數(shù)變少,從而減少了嘗試不同超參數(shù)的機(jī)會(huì)。

  1.   設(shè)置合理的初始化權(quán)重w和偏置b
    

f(x) = w * x + b

  1.   優(yōu)化學(xué)習(xí)率
    

型訓(xùn)練就是不斷嘗試和調(diào)整不同的w和b,那么每次調(diào)整的幅度是多少呢,這個(gè)就是學(xué)習(xí)率。

  1.   網(wǎng)絡(luò)節(jié)點(diǎn)輸入值正則化 batch normalization
    

神經(jīng)網(wǎng)絡(luò)訓(xùn)練時(shí),每一層的輸入分布都在變化。不論輸入值大還是小,我們的學(xué)習(xí)率都是相同的,這顯然是很浪費(fèi)效率的。而且當(dāng)輸入值很小時(shí),為了保證對它的精細(xì)調(diào)整,學(xué)習(xí)率不能設(shè)置太大。那有沒有辦法讓輸入值標(biāo)準(zhǔn)化得落到某一個(gè)范圍內(nèi),比如[0, 1]之間呢,這樣我們就再也不必為太小的輸入值而發(fā)愁了。

辦法當(dāng)然是有的,那就是正則化!由于我們學(xué)習(xí)的是輸入的特征分布,而不是它的絕對值,故可以對每一個(gè)mini-batch數(shù)據(jù)內(nèi)部進(jìn)行標(biāo)準(zhǔn)化,使他們規(guī)范化到[0, 1]內(nèi)。這就是Batch Normalization,簡稱BN。由大名鼎鼎的inception V2提出。它在每個(gè)卷積層后,使用一個(gè)BN層,從而使得學(xué)習(xí)率可以設(shè)定為一個(gè)較大的值。使用了BN的inceptionV2,只需要以前的1/14的迭代次數(shù)就可以達(dá)到之前的準(zhǔn)確率,大大加快了收斂速度。

  1.   采用更先進(jìn)的網(wǎng)絡(luò)結(jié)構(gòu),減少參數(shù)量
    

1)使用小卷積核來代替大卷積核。

VGGNet全部使用3x3的小卷積核,來代替AlexNet中11x11和5x5等大卷積核。小卷積核雖然參數(shù)量較少,但也會(huì)帶來特征面積捕獲過小的問題。inception
net認(rèn)為越往后的卷積層,應(yīng)該捕獲更多更高階的抽象特征。因此它在靠后的卷積層中使用的5x5等大面積的卷積核的比率較高,而在前面幾層卷積中,更多使用的是1x1和3x3的卷積核。

2)使用兩個(gè)串聯(lián)小卷積核來代替一個(gè)大卷積核。

inceptionV2中創(chuàng)造性的提出了兩個(gè)3x3的卷積核代替一個(gè)5x5的卷積核。在效果相同的情況下,參數(shù)量僅為原先的3x3x2 / 5x5 = 18/25

3)1x1卷積核的使用。

1x1的卷積核可以說是性價(jià)比最高的卷積了,沒有之一。它在參數(shù)量為1的情況下,同樣能夠提供線性變換,relu激活,輸入輸出channel變換等功能。VGGNet創(chuàng)造性的提出了1x1的卷積核

3)非對稱卷積核的使用。

inceptionV3中將一個(gè)7x7的卷積拆分成了一個(gè)1x7和一個(gè)7x1,
卷積效果相同的情況下,大大減少了參數(shù)量,同時(shí)還提高了卷積的多樣性。

4)depthwise卷積的使用。

mobileNet中將一個(gè)3x3的卷積拆分成了串聯(lián)的一個(gè)3x3 depthwise卷積和一個(gè)1x1正常卷積。對于輸入channel為M,輸出為N的卷積,正常情況下,每個(gè)輸出channel均需要M個(gè)卷積核對輸入的每個(gè)channel進(jìn)行卷積,并疊加。也就是需要MxN個(gè)卷積核。而在depthwise卷積中,輸出channel和輸入相同,每個(gè)輸入channel僅需要一個(gè)卷積核。而將channel變換的工作交給了1x1的卷積。這個(gè)方法在參數(shù)量減少到之前1/9的情況下,精度仍然能達(dá)到80%。

5)全局平均池化代替全連接層。

這個(gè)才是大殺器!AlexNet和VGGNet中,全連接層幾乎占據(jù)了90%的參數(shù)量。inceptionV1創(chuàng)造性的使用全局平均池化來代替最后的全連接層,使得其在網(wǎng)絡(luò)結(jié)構(gòu)更深的情況下(22層,AlexNet僅8層),參數(shù)量只有500萬,僅為AlexNet的1/12。

總結(jié)

以上是生活随笔為你收集整理的深度学习模型训练过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。