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

創(chuàng)新互聯(lián)從2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都做網(wǎng)站、成都網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元麻山做網(wǎng)站,已為上家服務(wù),為麻山各地企業(yè)和個人服務(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ù),否則會報錯
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的策略時,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會影響訓(xùn)練的效果,隨著每個batch,追蹤樣本的均值和方差。對于固定的網(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)練時,model.train()會修改模式,freeze_zn()應(yīng)該在這里后面
4.過濾參數(shù)
訓(xùn)練時,對于優(yōu)化器,應(yīng)該只傳入需要改變的參數(shù),否則會報錯
filter(lambda p: p.requires_grad, model.parameters())
以上這篇Pytorch之finetune使用詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考。
分享名稱:詳解PyTorchfinetune使用方法
分享路徑:http://www.dlmjj.cn/article/cohocdc.html


咨詢
建站咨詢
