Pytorch之如何提取模型中的某一層
Pytorch提取模型中的某一層
modules()會(huì)返回模型中所有模塊的迭代器,它能夠訪問到最內(nèi)層,比如self.layer1.conv1這個(gè)模塊,還有一個(gè)與它們相對(duì)應(yīng)的是name_children()屬性以及named_modules(),這兩個(gè)不僅會(huì)返回模塊的迭代器,還會(huì)返回網(wǎng)絡(luò)層的名字。
方法如下:
new_model = nn.Sequential(*list(model.children())[:2]
取模型中的前兩層
如果希望提取出模型中的所有卷積層,可以像下面這樣操作:
for layer in model.named_modules(): if isinstance(layer[1],nn.Conv2d): conv_model.add_module(layer[0],layer[1]) #使用isinstance可以判斷這個(gè)模塊是不是所需要的類型實(shí)例
Pytorch查看模型某一層的參數(shù)數(shù)值
import os import torch import torch.nn as nn # 設(shè)置GPU os.environ['CUDA_VISIBLE_DEVICES'] = '1' device = torch.device('cuda:0') if torch.cuda.is_available() else 'cpu' # 創(chuàng)建模型 model = nn.Sequential(nn.Conv2d(3, 16, kernel_size=1), nn.Conv2d(16, 3, kernel_size=1)) model.to(device) # 方法一 # 打印某一層的參數(shù)名 for name in model.state_dict(): print(name) # 直接索引某一層的name來輸出該層的參數(shù) print(model.state_dict()['1.weight']) # 方法二 # 獲取模型所有參數(shù)名和參數(shù)值 存儲(chǔ)在list中 params = list(model.named_parameters()) # 分別索引得到某層的名稱和參數(shù)值 print(params[2][0]) # name print(params[2][1].data) # data # 方法三 # 依次遍歷模型每一層的參數(shù) 存儲(chǔ)到dict中 params = {} for name, param in model.named_parameters(): params[name] = param.detach().cpu().numpy() print(params['0.weight']) # 方法四 # 遍歷模型的每一層 查找目標(biāo)層 輸出參數(shù)值 for layer in model.modules(): # 打印Conv2d層的參數(shù) if (isinstance(layer, nn.Conv2d)): print(layer.weight)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于Python利用Faker批量測試數(shù)據(jù)
這篇文章主要介紹了基于Python利用Faker批量測試數(shù)據(jù)。測試過程中,經(jīng)常需要批量去造數(shù)據(jù),方法有很多,最簡單方便的應(yīng)該是使用python?的一個(gè)三方庫Faker。下面我們就來看看三方庫Faker如何批量測試數(shù)據(jù),需要的朋友可以參考一下2022-03-03python實(shí)現(xiàn)的陽歷轉(zhuǎn)陰歷(農(nóng)歷)算法
這篇文章主要介紹了python實(shí)現(xiàn)的陽歷轉(zhuǎn)陰歷(農(nóng)歷)算法,需要的朋友可以參考下2014-04-04python3反轉(zhuǎn)字符串的3種方法(小結(jié))
這篇文章主要介紹了python3反轉(zhuǎn)字符串的3種方法(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Python實(shí)現(xiàn)跨平臺(tái)表格數(shù)據(jù)分頁打印預(yù)覽處理詳解
這篇文章主要為大家詳細(xì)介紹了如何使用PySide6/PyQt6實(shí)現(xiàn)Python跨平臺(tái)表格數(shù)據(jù)分頁打印預(yù)覽處理,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-03-03Python基于callable函數(shù)檢測對(duì)象是否可被調(diào)用
這篇文章主要介紹了Python基于callable函數(shù)檢測對(duì)象是否可被調(diào)用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10Python游戲開發(fā)之魔塔小游戲的實(shí)現(xiàn)
魔塔小游戲作為一款角色扮演RPG小游戲,一直深受大家的喜愛。本文將利用Python的cpgames模塊制作這一經(jīng)典小游戲,感興趣的可以跟隨小編一起動(dòng)手試一試2022-02-02