最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2021年06月05日 10:32:39   作者:DRACO于  
這篇文章主要介紹了pytorch 預訓練模型讀取修改相關參數(shù)的填坑問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

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

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

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())

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

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)

最后是修改參數(shù)名拿來用的,

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:加載預訓練模型中的部分參數(shù),并固定該部分參數(shù)(真實有效)

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

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:固定部分參數(shù)

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

Step3:訓練部分參數(shù)

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

Step4:檢查部分參數(shù)是否固定

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

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

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

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

相關文章

  • 使用matplotlib中scatter方法畫散點圖

    使用matplotlib中scatter方法畫散點圖

    這篇文章主要為大家詳細介紹了使用matplotlib中scatter方法畫散點圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • 使用jupyter Nodebook查看函數(shù)或方法的參數(shù)以及使用情況

    使用jupyter Nodebook查看函數(shù)或方法的參數(shù)以及使用情況

    這篇文章主要介紹了使用jupyter Nodebook查看函數(shù)或方法的參數(shù)以及使用情況,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python配置mssql連接的方法

    python配置mssql連接的方法

    這篇文章主要介紹了python配置mssql連接的方法,需要的朋友可以參考下
    2021-06-06
  • 基于python中的TCP及UDP(詳解)

    基于python中的TCP及UDP(詳解)

    下面小編就為大家?guī)硪黄趐ython中的TCP及UDP(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望對大家有所幫助
    2017-11-11
  • python多線程并發(fā)實例及其優(yōu)化

    python多線程并發(fā)實例及其優(yōu)化

    這篇文章主要介紹了python多線程并發(fā)實例及其優(yōu)化,threading是擴展模塊,在thread的基礎上進行了封裝及改進。所以只需要使用threading這個模塊就能完成并發(fā)的測試,需要的朋友可以參考下
    2019-06-06
  • pycharm配置anaconda環(huán)境時找不到python.exe的兩種解決辦法

    pycharm配置anaconda環(huán)境時找不到python.exe的兩種解決辦法

    如果你在Anaconda中創(chuàng)建了虛擬環(huán)境,但是無法找到python.exe,可能是因為虛擬環(huán)境的Python路徑?jīng)]有添加到系統(tǒng)環(huán)境變量中,這篇文章主要給大家介紹了關于pycharm配置anaconda環(huán)境時找不到python.exe的兩種解決辦法,需要的朋友可以參考下
    2024-07-07
  • keras中的loss、optimizer、metrics用法

    keras中的loss、optimizer、metrics用法

    這篇文章主要介紹了keras中的loss、optimizer、metrics用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • python?自定義裝飾器使用及原理詳解(最新推薦)

    python?自定義裝飾器使用及原理詳解(最新推薦)

    本文詳細介紹了Python裝飾器的原理和使用方法,包括簡單的裝飾器、帶參數(shù)的裝飾器、原函數(shù)的傳參、保留原函數(shù)元數(shù)據(jù)以及類裝飾器,通過這些講解,讀者可以全面了解裝飾器的強大功能和應用技巧,感興趣的朋友一起看看吧
    2025-02-02
  • python實現(xiàn)的簡單FTP上傳下載文件實例

    python實現(xiàn)的簡單FTP上傳下載文件實例

    這篇文章主要介紹了python實現(xiàn)的簡單FTP上傳下載文件的方法,實例分析了Python基于FTP模塊實現(xiàn)文件傳輸?shù)募记?需要的朋友可以參考下
    2015-06-06
  • Python中的asyncio代碼詳解

    Python中的asyncio代碼詳解

    asyncio 是用來編寫 并發(fā) 代碼的庫,使用 async/await 語法。 asyncio 被用作多個提供高性能 Python 異步框架的基礎,包括網(wǎng)絡和網(wǎng)站服務,數(shù)據(jù)庫連接庫,分布式任務隊列等等。這篇文章主要介紹了Python中的asyncio,需要的朋友可以參考下
    2019-06-06

最新評論

二连浩特市| 阿拉善右旗| 临颍县| 谷城县| 葫芦岛市| 禹城市| 禹州市| 溧阳市| 进贤县| 富裕县| 东丽区| 漳州市| 晋城| 涪陵区| 资源县| 浦北县| 石柱| 百色市| 巴楚县| 古丈县| 赫章县| 米易县| 台湾省| 济宁市| 石河子市| 鸡西市| 通江县| 怀柔区| 定南县| 阿克苏市| 绥芬河市| 敦煌市| 吐鲁番市| 新建县| 宁河县| 红桥区| 柯坪县| 婺源县| 怀安县| 会东县| 苗栗县|