Pytorch之如何提取模型中的某一層
Pytorch提取模型中的某一層
modules()會返回模型中所有模塊的迭代器,它能夠訪問到最內(nèi)層,比如self.layer1.conv1這個模塊,還有一個與它們相對應(yīng)的是name_children()屬性以及named_modules(),這兩個不僅會返回模塊的迭代器,還會返回網(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可以判斷這個模塊是不是所需要的類型實例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ù)值 存儲在list中
params = list(model.named_parameters())
# 分別索引得到某層的名稱和參數(shù)值
print(params[2][0]) # name
print(params[2][1].data) # data
# 方法三
# 依次遍歷模型每一層的參數(shù) 存儲到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é)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于Python利用Faker批量測試數(shù)據(jù)
這篇文章主要介紹了基于Python利用Faker批量測試數(shù)據(jù)。測試過程中,經(jīng)常需要批量去造數(shù)據(jù),方法有很多,最簡單方便的應(yīng)該是使用python?的一個三方庫Faker。下面我們就來看看三方庫Faker如何批量測試數(shù)據(jù),需要的朋友可以參考一下2022-03-03
python實現(xiàn)的陽歷轉(zhuǎn)陰歷(農(nóng)歷)算法
這篇文章主要介紹了python實現(xiàn)的陽歷轉(zhuǎn)陰歷(農(nóng)歷)算法,需要的朋友可以參考下2014-04-04
python3反轉(zhuǎn)字符串的3種方法(小結(jié))
這篇文章主要介紹了python3反轉(zhuǎn)字符串的3種方法(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Python實現(xiàn)跨平臺表格數(shù)據(jù)分頁打印預(yù)覽處理詳解
這篇文章主要為大家詳細(xì)介紹了如何使用PySide6/PyQt6實現(xiàn)Python跨平臺表格數(shù)據(jù)分頁打印預(yù)覽處理,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-03-03
Python基于callable函數(shù)檢測對象是否可被調(diào)用
這篇文章主要介紹了Python基于callable函數(shù)檢測對象是否可被調(diào)用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10

