新聞中心
PyTorch 是 Torch 在 Python 上的衍生. 因?yàn)?Torch 是一個(gè)使用 Lua 語言的神經(jīng)網(wǎng)絡(luò)庫,由于 PyTorch 采用了動(dòng)態(tài)計(jì)算圖(dynamic computational graph)結(jié)構(gòu),PyTorch 有一種獨(dú)特的神經(jīng)網(wǎng)絡(luò)構(gòu)建方法:使用和重放 tape recorder。

創(chuàng)新互聯(lián)從2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元麻山做網(wǎng)站,已為上家服務(wù),為麻山各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
finetune分為全局finetune和局部finetune。首先介紹一下局部finetune步驟:
1.固定參數(shù)
for name, child in model.named_children():
for param in child.parameters():
param.requires_grad = False
后,只傳入 需要反傳的參數(shù),否則會(huì)報(bào)錯(cuò)
filter(lambda param: param.requires_grad, model.parameters())
2.調(diào)低學(xué)習(xí)率,加快衰減
finetune是在預(yù)訓(xùn)練模型上進(jìn)行微調(diào),學(xué)習(xí)速率不能太大。
目前不清楚:學(xué)習(xí)速率降低的幅度可以更快一些。這樣以來,在使用step的策略時(shí),stepsize可以更小一些。
直接從原始數(shù)據(jù)訓(xùn)練的base_lr一般為0.01,微調(diào)要比0.01小,置為0.001
要比直接訓(xùn)練的小一些,直接訓(xùn)練的stepsize為100000,finetune的stepsize: 50000
3. 固定bn或取消dropout:
batchnorm會(huì)影響訓(xùn)練的效果,隨著每個(gè)batch,追蹤樣本的均值和方差。對(duì)于固定的網(wǎng)絡(luò),bn應(yīng)該使用全局的數(shù)值
def freeze_bn(self):
for layer in self.modules():
if isinstance(layer, nn.BatchNorm2d):
layer.eval()
訓(xùn)練時(shí),model.train()會(huì)修改模式,freeze_zn()應(yīng)該在這里后面
4.過濾參數(shù)
訓(xùn)練時(shí),對(duì)于優(yōu)化器,應(yīng)該只傳入需要改變的參數(shù),否則會(huì)報(bào)錯(cuò)
filter(lambda p: p.requires_grad, model.parameters())
以上這篇Pytorch之finetune使用詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考。
本文題目:詳解PyTorchfinetune使用方法
標(biāo)題路徑:http://m.5511xx.com/article/cohocdc.html


咨詢
建站咨詢
