好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > pytorch 預訓練模型讀取修改相關參數的填坑問題

pytorch 預訓練模型讀取修改相關參數的填坑問題

熱門標簽:商家地圖標注海報 孝感營銷電話機器人效果怎么樣 聊城語音外呼系統 打電話機器人營銷 海外網吧地圖標注注冊 南陽打電話機器人 ai電銷機器人的優勢 騰訊地圖標注沒法顯示 地圖標注自己和別人標注區別

pytorch 預訓練模型讀取修改相關參數的填坑

修改部分層,仍然調用之前的模型參數。

resnet = resnet50(pretrained=False)
resnet.load_state_dict(torch.load(args.predir))
 
res_conv31 = Bottleneck_dilated(1024, 256,dilated_rate = 2)
print("---------------------",res_conv31)
print("---------------------",resnet.layer3[1])
 
res_conv31.load_state_dict(resnet.layer3[1].state_dict())

網絡預訓練模型與之前的模型對應不上,名稱差個前綴

model_dict = model.state_dict()
# print(model_dict)
pretrained_dict = torch.load("/yzc/reid_testpcb/se_resnet50-ce0d4300.pth")
keys = []
for k, v in pretrained_dict.items():
       keys.append(k)
i = 0
for k, v in model_dict.items():
    if v.size() == pretrained_dict[keys[i]].size():
         model_dict[k] = pretrained_dict[keys[i]]
         #print(model_dict[k])
         i = i + 1
model.load_state_dict(model_dict)

最后是修改參數名拿來用的,

from collections import OrderedDict
pretrained_dict = torch.load('premodel')
 
new_state_dict = OrderedDict()
 
# for k, v in mgn_state_dict.items():
#     name = k[7:]  # remove `module.`
#     new_state_dict[name] = v
# self.model = self.model.load_state_dict(new_state_dict)
 
for k, v in pretrained_dict.items():
    name = "model.module."+k   # remove `module.`
    # print(name)
    new_state_dict[name] = v
self.model.load_state_dict(new_state_dict)

pytorch:加載預訓練模型中的部分參數,并固定該部分參數(真實有效)

大家在學習pytorch時,可能想利用pytorch進行fine-tune,但是又煩惱于參數的加載問題。下面我將講訴我的使用心得。

Step1: 加載預訓練模型,并去除需要再次訓練的層

#注意:需要重新訓練的層的名字要和之前的不同。
model=resnet()#自己構建的模型,以resnet為例
model_dict = model.state_dict()
pretrained_dict = torch.load('xxx.pkl')
pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_dict}
model_dict.update(pretrained_dict)
model.load_state_dict(model_dict)

Step2:固定部分參數

#k是可訓練參數的名字,v是包含可訓練參數的一個實體
#可以先print(k),找到自己想進行調整的層,并將該層的名字加入到if語句中:
for k,v in model.named_parameters():
    if k!='xxx.weight' and k!='xxx.bias' :
        v.requires_grad=False#固定參數

Step3:訓練部分參數

#將要訓練的參數放入優化器
optimizer2=torch.optim.Adam(params=[model.xxx.weight,model.xxx.bias],lr=learning_rate,betas=(0.9,0.999),weight_decay=1e-5)

Step4:檢查部分參數是否固定

debug之后,程序正常運行,最好檢查一下網絡的參數是否真的被固定了,如何沒固定,網絡的狀態接近于重新訓練,可能會導致網絡性能不穩定,也沒辦法得到想要得到的性能提升。

for k,v in model.named_parameters():
   if k!='xxx.weight' and k!='xxx.bias' :
   print(v.requires_grad)#理想狀態下,所有值都是False

需要注意的是,操作失誤最大的影響是,loss函數幾乎不會發生變化,一直處于最開始的狀態,這很可能是因為所有參數都被固定了。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Pytorch通過保存為ONNX模型轉TensorRT5的實現
  • pytorch_pretrained_bert如何將tensorflow模型轉化為pytorch模型
  • pytorch模型的保存和加載、checkpoint操作
  • PyTorch 如何檢查模型梯度是否可導
  • 解決Pytorch修改預訓練模型時遇到key不匹配的情況
  • PyTorch模型轉TensorRT是怎么實現的?

標簽:六盤水 楊凌 迪慶 聊城 牡丹江 南寧 揚州 撫州

巨人網絡通訊聲明:本文標題《pytorch 預訓練模型讀取修改相關參數的填坑問題》,本文關鍵詞  pytorch,預,訓練,模型,讀取,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《pytorch 預訓練模型讀取修改相關參數的填坑問題》相關的同類信息!
  • 本頁收集關于pytorch 預訓練模型讀取修改相關參數的填坑問題的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 女教师大荫蒂毛茸茸公交车| 日韩欧美无线在码| 老师掀开裙子让我挺进去18禁 | 大胸美女无遮挡网站| 神秘的英文| 牛鞭擦进少妇的下身在线观看| 国产免费无码高潮2023| yw尤物AV国产在线电影| 饥渴放荡受np文| 91桃色在线观看| 日韩在线毛片| 日韩 精品 无码 系列 视频| 吃了继兄开的药后我做的梦更长了 | 天美传媒新剧国产剧影视公司| 成人自学漫画免费观看| 免费A漫 禁漫天堂So导航| 小黄瓜网站| 好看的射射射射射| 久久久久精品国产毛片售后服务 | 男生和女生怀孕的方法有哪些| 夫妻性生活黄色一级片| 人工 换脸 在线 亚洲| 韩国三级视频播放理论| 国产亚洲一区二区麻豆| 野外亲子乱子伦视频丶| 8x8x影院在线观看| 99国产精品欲无码亚洲乱| 国产好吊色无码综合网 | 岳女双宿双飞互换3p| gogo人体大胆色妇| 刘玥和闺蜜99部精彩视频国产| 欧美牲| 农村妇女野战A片| 制服 师生 亚洲 无码 制服 写真| 欧美一级特黄特色大片免费| 亲爱的老师4韩国中字在线完整版| 日本丶国产丶欧美色综合| 免费做爰猛烈吃奶摸视频在线观看 | 国产精品美女午夜爽爽爽免费| 午夜精品同性女女| 91麻豆精品一二三区在线|