一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

零基礎(chǔ)入門語義分割-Task5 模型訓(xùn)練與驗(yàn)證

 印度阿三17 2021-03-05

一個(gè)成熟合格的深度學(xué)習(xí)訓(xùn)練流程至少具備以下功能:

在訓(xùn)練集上進(jìn)行訓(xùn)練,并在驗(yàn)證集上進(jìn)行驗(yàn)證;
模型可以保存最優(yōu)的權(quán)重,并讀取權(quán)重;
記錄下訓(xùn)練集和驗(yàn)證集的精度,便于調(diào)參。
5 模型訓(xùn)練與驗(yàn)證
為此本章將從構(gòu)建驗(yàn)證集、模型訓(xùn)練和驗(yàn)證、模型保存與加載和模型調(diào)參幾個(gè)部分講解,在部分小節(jié)中將會(huì)結(jié)合Pytorch代碼進(jìn)行講解。

5.1 學(xué)習(xí)目標(biāo)
理解驗(yàn)證集的作用,并使用訓(xùn)練集和驗(yàn)證集完成訓(xùn)練
學(xué)會(huì)使用Pytorch環(huán)境下的模型讀取和加載,并了解調(diào)參流程
5.2 構(gòu)造驗(yàn)證集
在機(jī)器學(xué)習(xí)模型(特別是深度學(xué)習(xí)模型)的訓(xùn)練過程中,模型是非常容易過擬合的。深度學(xué)習(xí)模型在不斷的訓(xùn)練過程中訓(xùn)練誤差會(huì)逐漸降低,但測(cè)試誤差的走勢(shì)則不一定。

在模型的訓(xùn)練過程中,模型只能利用訓(xùn)練數(shù)據(jù)來進(jìn)行訓(xùn)練,模型并不能接觸到測(cè)試集上的樣本。因此模型如果將訓(xùn)練集學(xué)的過好,模型就會(huì)記住訓(xùn)練樣本的細(xì)節(jié),導(dǎo)致模型在測(cè)試集的泛化效果較差,這種現(xiàn)象稱為過擬合(Overfitting)。與過擬合相對(duì)應(yīng)的是欠擬合(Underfitting),即模型在訓(xùn)練集上的擬合效果較差。

IMG

如圖所示:隨著模型復(fù)雜度和模型訓(xùn)練輪數(shù)的增加,CNN模型在訓(xùn)練集上的誤差會(huì)降低,但在測(cè)試集上的誤差會(huì)逐漸降低,然后逐漸升高,而我們?yōu)榱俗非蟮氖悄P驮跍y(cè)試集上的精度越高越好。

導(dǎo)致模型過擬合的情況有很多種原因,其中最為常見的情況是模型復(fù)雜度(Model Complexity )太高,導(dǎo)致模型學(xué)習(xí)到了訓(xùn)練數(shù)據(jù)的方方面面,學(xué)習(xí)到了一些細(xì)枝末節(jié)的規(guī)律。

解決上述問題最好的解決方法:構(gòu)建一個(gè)與測(cè)試集盡可能分布一致的樣本集(可稱為驗(yàn)證集),在訓(xùn)練過程中不斷驗(yàn)證模型在驗(yàn)證集上的精度,并以此控制模型的訓(xùn)練。

在給定賽題后,賽題方會(huì)給定訓(xùn)練集和測(cè)試集兩部分?jǐn)?shù)據(jù)。參賽者需要在訓(xùn)練集上面構(gòu)建模型,并在測(cè)試集上面驗(yàn)證模型的泛化能力。因此參賽者可以通過提交模型對(duì)測(cè)試集的預(yù)測(cè)結(jié)果,來驗(yàn)證自己模型的泛化能力。同時(shí)參賽方也會(huì)限制一些提交的次數(shù)限制,以此避免參賽選手“刷分”。

在一般情況下,參賽選手也可以自己在本地劃分出一個(gè)驗(yàn)證集出來,進(jìn)行本地驗(yàn)證。訓(xùn)練集、驗(yàn)證集和測(cè)試集分別有不同的作用:

訓(xùn)練集(Train Set):模型用于訓(xùn)練和調(diào)整模型參數(shù);
驗(yàn)證集(Validation Set):用來驗(yàn)證模型精度和調(diào)整模型超參數(shù);
測(cè)試集(Test Set):驗(yàn)證模型的泛化能力。
因?yàn)橛?xùn)練集和驗(yàn)證集是分開的,所以模型在驗(yàn)證集上面的精度在一定程度上可以反映模型的泛化能力。在劃分驗(yàn)證集的時(shí)候,需要注意驗(yàn)證集的分布應(yīng)該與測(cè)試集盡量保持一致,不然模型在驗(yàn)證集上的精度就失去了指導(dǎo)意義。

既然驗(yàn)證集這么重要,那么如何劃分本地驗(yàn)證集呢。在一些比賽中,賽題方會(huì)給定驗(yàn)證集;如果賽題方?jīng)]有給定驗(yàn)證集,那么參賽選手就需要從訓(xùn)練集中拆分一部分得到驗(yàn)證集。驗(yàn)證集的劃分有如下幾種方式:

IMG

留出法(Hold-Out)
直接將訓(xùn)練集劃分成兩部分,新的訓(xùn)練集和驗(yàn)證集。這種劃分方式的優(yōu)點(diǎn)是最為直接簡(jiǎn)單;缺點(diǎn)是只得到了一份驗(yàn)證集,有可能導(dǎo)致模型在驗(yàn)證集上過擬合。留出法應(yīng)用場(chǎng)景是數(shù)據(jù)量比較大的情況。

交叉驗(yàn)證法(Cross Validation,CV)
將訓(xùn)練集劃分成K份,將其中的K-1份作為訓(xùn)練集,剩余的1份作為驗(yàn)證集,循環(huán)K訓(xùn)練。這種劃分方式是所有的訓(xùn)練集都是驗(yàn)證集,最終模型驗(yàn)證精度是K份平均得到。這種方式的優(yōu)點(diǎn)是驗(yàn)證集精度比較可靠,訓(xùn)練K次可以得到K個(gè)有多樣性差異的模型;CV驗(yàn)證的缺點(diǎn)是需要訓(xùn)練K次,不適合數(shù)據(jù)量很大的情況。

自助采樣法(BootStrap)
通過有放回的采樣方式得到新的訓(xùn)練集和驗(yàn)證集,每次的訓(xùn)練集和驗(yàn)證集都是有區(qū)別的。這種劃分方式一般適用于數(shù)據(jù)量較小的情況。

在本次賽題中已經(jīng)劃分為驗(yàn)證集,因此選手可以直接使用訓(xùn)練集進(jìn)行訓(xùn)練,并使用驗(yàn)證集進(jìn)行驗(yàn)證精度(當(dāng)然你也可以合并訓(xùn)練集和驗(yàn)證集,自行劃分驗(yàn)證集)。

當(dāng)然這些劃分方法是從數(shù)據(jù)劃分方式的角度來講的,在現(xiàn)有的數(shù)據(jù)比賽中一般采用的劃分方法是留出法和交叉驗(yàn)證法。如果數(shù)據(jù)量比較大,留出法還是比較合適的。當(dāng)然任何的驗(yàn)證集的劃分得到的驗(yàn)證集都是要保證訓(xùn)練集-驗(yàn)證集-測(cè)試集的分布是一致的,所以如果不管劃分何種的劃分方式都是需要注意的。

這里的分布一般指的是與標(biāo)簽相關(guān)的統(tǒng)計(jì)分布,比如在分類任務(wù)中“分布”指的是標(biāo)簽的類別分布,訓(xùn)練集-驗(yàn)證集-測(cè)試集的類別分布情況應(yīng)該大體一致;如果標(biāo)簽是帶有時(shí)序信息,則驗(yàn)證集和測(cè)試集的時(shí)間間隔應(yīng)該保持一致。

5.3 模型訓(xùn)練與驗(yàn)證
在本節(jié)我們目標(biāo)使用Pytorch來完成CNN的訓(xùn)練和驗(yàn)證過程,CNN網(wǎng)絡(luò)結(jié)構(gòu)與之前的章節(jié)中保持一致。我們需要完成的邏輯結(jié)構(gòu)如下:

構(gòu)造訓(xùn)練集和驗(yàn)證集;
每輪進(jìn)行訓(xùn)練和驗(yàn)證,并根據(jù)最優(yōu)驗(yàn)證集精度保存模型。
train_loader = torch.utils.data.DataLoader(
train_dataset,
batch_size=10,
shuffle=True,
num_workers=10,
)

val_loader = torch.utils.data.DataLoader(
val_dataset,
batch_size=10,
shuffle=False,
num_workers=10,
)

model = Model1()
criterion = nn.CrossEntropyLoss(size_average=False)
optimizer = torch.optim.Adam(model.parameters(), 0.001)
best_loss = 1000.0
for epoch in range(20):
print('Epoch: ', epoch)

train(train_loader, model, criterion, optimizer, epoch)
val_loss = validate(val_loader, model, criterion)

記錄下驗(yàn)證集精度

if val_loss < best_loss:
best_loss = val_loss
torch.save(model.state_dict(), './model.pt’)
其中每個(gè)Epoch的訓(xùn)練代碼如下:

def train(train_loader, model, criterion, optimizer, epoch):
# 切換模型為訓(xùn)練模式
model.train()

for i, (input, target) in enumerate(train_loader):
  # 正向傳播
  # 計(jì)算損失
  # 反向傳播
  pass

其中每個(gè)Epoch的驗(yàn)證代碼如下:

def validate(val_loader, model, criterion):
# 切換模型為預(yù)測(cè)模型
model.eval()
val_loss = []

# 不記錄模型梯度信息
with torch.no_grad():
    for i, (input, target) in enumerate(val_loader):
        # 正向傳播
        # 計(jì)算損失
        pass

5.4 模型保存與加載
在Pytorch中模型的保存和加載非常簡(jiǎn)單,比較常見的做法是保存和加載模型參數(shù): torch.save(model_object.state_dict(), 'model.pt’)

model.load_state_dict(torch.load(’ model.pt’))

5.5 模型調(diào)參流程
深度學(xué)習(xí)原理少但實(shí)踐性非常強(qiáng),基本上很多的模型的驗(yàn)證只能通過訓(xùn)練來完成。同時(shí)深度學(xué)習(xí)有眾多的網(wǎng)絡(luò)結(jié)構(gòu)和超參數(shù),因此需要反復(fù)嘗試。訓(xùn)練深度學(xué)習(xí)模型需要GPU的硬件支持,也需要較多的訓(xùn)練時(shí)間,如何有效的訓(xùn)練深度學(xué)習(xí)模型逐漸成為了一門學(xué)問。

深度學(xué)習(xí)有眾多的訓(xùn)練技巧,比較推薦的閱讀鏈接有:

http://lamda./weixs/project/CNNTricks/CNNTricks.html
http://karpathy./2019/04/25/recipe/
本節(jié)挑選了常見的一些技巧來講解,并針對(duì)本次賽題進(jìn)行具體分析。與傳統(tǒng)的機(jī)器學(xué)習(xí)模型不同,深度學(xué)習(xí)模型的精度與模型的復(fù)雜度、數(shù)據(jù)量、正則化、數(shù)據(jù)擴(kuò)增等因素直接相關(guān)。所以當(dāng)深度學(xué)習(xí)模型處于不同的階段(欠擬合、過擬合和完美擬合)的情況下,大家可以知道可以什么角度來繼續(xù)優(yōu)化模型。

在參加本次比賽的過程中,我建議大家以如下邏輯完成:

初步構(gòu)建簡(jiǎn)單的CNN模型,不用特別復(fù)雜,跑通訓(xùn)練、驗(yàn)證和預(yù)測(cè)的流程;
簡(jiǎn)單CNN模型的損失會(huì)比較大,嘗試增加模型復(fù)雜度,并觀察驗(yàn)證集精度;
在增加模型復(fù)雜度的同時(shí)增加數(shù)據(jù)擴(kuò)增方法,直至驗(yàn)證集精度不變。
IMG

5.6 本章小節(jié)
本章以深度學(xué)習(xí)模型的訓(xùn)練和驗(yàn)證為基礎(chǔ),講解了驗(yàn)證集劃分方法、模型訓(xùn)練與驗(yàn)證、模型保存和加載以及模型調(diào)參流程。

需要注意的是模型復(fù)雜度是相對(duì)的,并不一定模型越復(fù)雜越好。在有限設(shè)備和有限時(shí)間下,需要選擇能夠快速迭代訓(xùn)練的模型。

5.7 課后作業(yè)
掌握模型訓(xùn)練&模型調(diào)參過程;
掌握數(shù)據(jù)劃分方法和具體實(shí)踐;

來源:https://www./content-4-879151.html

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    精品日韩中文字幕视频在线| 人妻久久一区二区三区精品99| 色一情一伦一区二区三| 欧美日韩一区二区三区色拉拉| 日本熟妇五十一区二区三区| 在线观看那种视频你懂的| 色综合久久超碰色婷婷| 国产综合香蕉五月婷在线| 欧美中文日韩一区久久| 欧美尤物在线观看西比尔| 国语对白刺激高潮在线视频| 国产原创中文av在线播放| 欧美乱妇日本乱码特黄大片| 成人午夜视频精品一区| 国产在线一区二区免费| 日韩熟妇人妻一区二区三区| 欧美又大又黄刺激视频| 嫩草国产福利视频一区二区| 福利在线午夜绝顶三级| 欧美日韩久久精品一区二区| 麻豆一区二区三区在线免费| 国产精品不卡高清在线观看| 亚洲成人黄色一级大片| 免费在线观看激情小视频| 精品国产日韩一区三区| 激情少妇一区二区三区| 国产熟女高清一区二区| 国产又大又黄又粗的黄色| 国产一区二区精品高清免费 | 精品视频一区二区不卡| 九九热这里有精品20| 欧美又大又黄刺激视频| 亚洲婷婷开心色四房播播| 欧美三级精品在线观看| 国产一区麻豆水好多高潮| 日韩国产亚洲欧美另类| 日韩精品一区二区一牛| 国产精品免费福利在线| 欧美亚洲综合另类色妞| 国产在线一区二区免费| 欧美不雅视频午夜福利|