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

PyTorch加載模型model.load_state_dict()問題及解決

 更新時間:2023年02月03日 14:16:42   作者:是否龍磊磊真的一無所有  
這篇文章主要介紹了PyTorch加載模型model.load_state_dict()問題及解決,具有很好的參考價值,希望對大家有所幫助。

PyTorch加載模型model.load_state_dict()問題

希望將訓練好的模型加載到新的網(wǎng)絡上。

如上面題目所描述的,PyTorch在加載之前保存的模型參數(shù)的時候,遇到了問題。

Unexpected key(s) in state_dict: "module.features. ...".,Expected ".features....". 直接原因是key值名字不對應。

表明了加載過程中,期望獲得的key值為feature...,而不是module.features....。

這是由模型保存過程中導致的,模型應該是在DataParallel模式下面,也就是采用了多GPU訓練模型,然后直接保存的。

You probably saved the model using nn.DataParallel, which stores the model in module, and now you are trying to load it without . You can either add a nn.DataParallel temporarily in your network for loading purposes, or you can load the weights file, create a new ordered dict without the module prefix, and load it back.

解決上面的問題有三個辦法: 

1. 對load的模型創(chuàng)建新的字典

去掉不需要的key值"module".

# original saved file with DataParallel
state_dict = torch.load('checkpoint.pt')  # 模型可以保存為pth文件,也可以為pt文件。
# create new OrderedDict that does not contain `module.`
from collections import OrderedDict
new_state_dict = OrderedDict()
for k, v in state_dict.items():
    name = k[7:] # remove `module.`,表面從第7個key值字符取到最后一個字符,正好去掉了module.
    new_state_dict[name] = v #新字典的key值對應的value為一一對應的值。 
# load params
model.load_state_dict(new_state_dict) # 從新加載這個模型。

2. 直接用空白''代替'module.'

model.load_state_dict({k.replace('module.',''):v for k,v in torch.load('checkpoint.pt').items()})
 
# 相當于用''代替'module.'。
#直接使得需要的鍵名等于期望的鍵名。

3. 最簡單的方法

加載模型之后,接著將模型DataParallel,此時就可以load_state_dict。

如果有多個GPU,將模型并行化,用DataParallel來操作。

這個過程會將key值加一個"module. ***"。

model = VGGNet()
params=model.state_dict() #獲得模型的原始狀態(tài)以及參數(shù)。
for k,v in params.items():
    print(k) #只打印key值,不打印具體參數(shù)。

4. 總結

從出錯顯示的問題就可以看出,key值不匹配,因此可以選擇多種方法,將模型參數(shù)加載進去。

這個方法通常會在load_state_dict過程中遇到。將訓練好的一個網(wǎng)絡參數(shù),移植到另外一個網(wǎng)絡上面,繼續(xù)訓練。

或者將訓練好的網(wǎng)絡checkpoint加載進模型,再次進行訓練。可以打印出model state_dict來看出兩者的差別。

model = VGGNet()
params=model.state_dict() #獲得模型的原始狀態(tài)以及參數(shù)。
for k,v in params.items():
    print(k) #只打印key值,不打印具體參數(shù)。

features.0.0.weight   
features.0.1.weight
features.1.conv.3.weight
features.1.conv.4.num_batches_tracked

model = VGGNet()
checkpoint = torch.load('checkpoint.pt', map_location='cpu')
# Load weights to resume from checkpoint。
# print('**************************************')
# 這個方法能夠直接打印出你保存的checkpoint的鍵和值。
for k,v in checkpoint.items():
    print(k) 
print("*****************************************")
 

輸出結果為:

module.features.0.0.weight",

"module.features.0.1.weight",

"module.features.0.1.bias

可以看出不匹配,模型的參數(shù)中,key值不同,多了module。

PS: 追加

在移植參數(shù)的過程中,對于出現(xiàn) .total_ops和.total_params結尾的參數(shù),可參考以下代碼:

from collections import OrderedDict
checkpoint = torch.load(
    pretrained_model_file_path,
    map_location=(None if use_cuda and not remap_to_cpu else "cpu"))
new_state_dict = OrderedDict()
for k, v in checkpoint.items():
    if not k.endswith('total_ops') and not k.endswith('total_params'):
        name = k[7:]
        new_state_dict[name] = v

最后

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

相關文章

  • Python matplotlib畫圖實例之繪制擁有彩條的圖表

    Python matplotlib畫圖實例之繪制擁有彩條的圖表

    這篇文章主要介紹了Python matplotlib畫圖實例之繪制擁有彩條的圖表,具有一定借鑒價值,需要的朋友可以參考下
    2017-12-12
  • TensorFlow MNIST手寫數(shù)據(jù)集的實現(xiàn)方法

    TensorFlow MNIST手寫數(shù)據(jù)集的實現(xiàn)方法

    MNIST數(shù)據(jù)集中包含了各種各樣的手寫數(shù)字圖片,這篇文章主要介紹了TensorFlow MNIST手寫數(shù)據(jù)集的實現(xiàn)方法,需要的朋友可以參考下
    2020-02-02
  • 分步驟教你用python一步步提取PPT中的圖片

    分步驟教你用python一步步提取PPT中的圖片

    今天要帶大家實現(xiàn)的是PPT圖片的提取。在我們學習工作中,PPT的使用還是非常頻繁的,但是自己做PPT是很麻煩的,所以就需要用到別人的模板或者素材,這個時候提取PPT圖片就可以減少我們很多工作。
    2021-09-09
  • Python?如何調用手機攝像頭

    Python?如何調用手機攝像頭

    本文介紹了如何使用Python和OpenCV庫在電腦上通過網(wǎng)絡連接查看和控制安卓手機攝像頭,詳細步驟包括安裝IP攝像頭服務器軟件,在同一局域網(wǎng)中連接手機和電腦,編寫Python腳本捕獲攝像頭數(shù)據(jù),以及保存照片等操作,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • Python時間操作之pytz模塊使用詳解

    Python時間操作之pytz模塊使用詳解

    在學習Python過程中,我們已經(jīng)了解了一些關于時間操作的庫,如:Python內置庫:time,datatime和第三方庫:dateutil,pytz等。本文將詳細講講pytz模塊的使用,需要的可以參考一下
    2022-06-06
  • python對矩陣進行轉置的2種處理方法

    python對矩陣進行轉置的2種處理方法

    這篇文章主要介紹了python對矩陣進行轉置的2種處理方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • python實現(xiàn)從ftp服務器下載文件

    python實現(xiàn)從ftp服務器下載文件

    這篇文章主要為大家詳細介紹了python實現(xiàn)從ftp服務器下載文件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • python爬蟲調度器用法及實例代碼

    python爬蟲調度器用法及實例代碼

    在本篇文章里小編給各位整理了關于python爬蟲調度器用法及實例代碼,需要的朋友們可以參考學習下。
    2020-11-11
  • Python實現(xiàn)簡單網(wǎng)頁圖片抓取完整代碼實例

    Python實現(xiàn)簡單網(wǎng)頁圖片抓取完整代碼實例

    這篇文章主要介紹了Python實現(xiàn)簡單網(wǎng)頁圖片抓取完整代碼實例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • python 將大文件切分為多個小文件的實例

    python 將大文件切分為多個小文件的實例

    今天小編就為大家分享一篇python 將大文件切分為多個小文件的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01

最新評論

云霄县| 哈尔滨市| 图木舒克市| 肇庆市| 黑龙江省| 广河县| 宣化县| 靖安县| 马尔康县| 奈曼旗| 绥中县| 平原县| 高州市| 长顺县| 晋城| 石狮市| 太康县| 百色市| 肃北| 贡山| 英超| 都兰县| 视频| 东安县| 嘉祥县| 威海市| 罗城| 二手房| 澄迈县| 阜阳市| 石楼县| 陇南市| 清远市| 延寿县| 蓬溪县| 浦城县| 资阳市| 柳州市| 阜宁县| 连南| 沂水县|