Pytorch之如何提取模型中的某一层

 更新时间:2023年09月09日 09:22:04   作者:黄鑫huangxin  
这篇文章主要介绍了Pytorch之如何提取模型中的某一层问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Pytorch提取模型中的某一层

modules()会返回模型中所有模块的迭代器,它能够访问到最内层,比如self.layer1.conv1这个模块,还有一个与它们相对应的是name_children()属性以及named_modules(),这两个不仅会返回模块的迭代器,还会返回网络层的名字。

方法如下:

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查看模型某一层的参数数值

import os
import torch
import torch.nn as nn
# 设置GPU
os.environ['CUDA_VISIBLE_DEVICES'] = '1'
device = torch.device('cuda:0') if torch.cuda.is_available() else 'cpu'
# 创建模型
model = nn.Sequential(nn.Conv2d(3, 16, kernel_size=1),
                      nn.Conv2d(16, 3, kernel_size=1))
model.to(device)
# 方法一
# 打印某一层的参数名
for name in model.state_dict():
    print(name)
# 直接索引某一层的name来输出该层的参数
print(model.state_dict()['1.weight'])
# 方法二
# 获取模型所有参数名和参数值 存储在list中
params = list(model.named_parameters())
# 分别索引得到某层的名称和参数值
print(params[2][0])  # name
print(params[2][1].data)  # data
# 方法三
# 依次遍历模型每一层的参数 存储到dict中
params = {}
for name, param in model.named_parameters():
    params[name] = param.detach().cpu().numpy()
print(params['0.weight'])
# 方法四
# 遍历模型的每一层 查找目标层 输出参数值
for layer in model.modules():
    # 打印Conv2d层的参数
    if (isinstance(layer, nn.Conv2d)):
        print(layer.weight)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python梯度提升库XGBoost解决机器学习问题使用探究

    Python梯度提升库XGBoost解决机器学习问题使用探究

    XGBoost是一个流行的梯度提升库,特别适用于解决各种机器学习问题,它在性能和速度上表现出色,常被用于分类、回归、排序、推荐系统等应用,本文将介绍XGBoost的基本原理、核心功能以及一些详细的示例代码
    2024-01-01
  • Python3中urlencode和urldecode的用法详解

    Python3中urlencode和urldecode的用法详解

    今天小编就为大家分享一篇Python3中urlencode和urldecode的用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python ETL工具 pyetl

    python ETL工具 pyetl

    pyetl是一个纯python开发的ETL框架, 相比sqoop, datax 之类的ETL工具,pyetl可以对每个字段添加udf函数,使得数据转换过程更加灵活,相比专业ETL工具pyetl更轻量,纯python代码操作,更加符合开发人员习惯。这篇文章主要介绍了python ETL工具 pyetl,需要的朋友参考下
    2020-06-06
  • Python实现图片格式转换小程序

    Python实现图片格式转换小程序

    这篇文章主要为大家详细介绍了Python实现图片格式转换小程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • windows下python之mysqldb模块安装方法

    windows下python之mysqldb模块安装方法

    这篇文章主要介绍了windows下python之mysqldb模块安装方法,需要的朋友可以参考下
    2017-09-09
  • 浅谈Python协程asyncio

    浅谈Python协程asyncio

    今天给大家带来的是关于Python的相关知识,文章围绕着Python协程展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • python实现处理Excel表格超详细系列

    python实现处理Excel表格超详细系列

    这篇文章主要介绍了python实现处理Excel表格超详细系列,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • python中字符串变二维数组的实例讲解

    python中字符串变二维数组的实例讲解

    下面小编就为大家分享一篇python中字符串变二维数组的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python tornado队列示例-一个并发web爬虫代码分享

    Python tornado队列示例-一个并发web爬虫代码分享

    这篇文章主要介绍了Python tornado队列示例-一个并发web爬虫代码分享,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Python中文纠错的简单实现

    Python中文纠错的简单实现

    这篇文章主要是用 Python 实现了简单的中文分词的同音字纠错,目前的案例中只允许错一个字,感兴趣的小伙伴们可以参考一下
    2021-07-07

最新评论