从名字就可以看出两者的区别
一个是模块信息,一个是参数,但还是想要更直观一点。
文字的说法可以看这里

这里展示的网络模型的代码来自https://github.com/Yanqi-Chen/Gradient-Rewiring
这里进行的修改就是打印出了对应的两个不同的信息:

import torch
import torch.nn as nn
import torch.nn.functional as F
from spikingjelly.clock_driven import functional, layer, surrogate, neuron
from torchvision import transformsclass Cifar10Net(nn.Module):def __init__(self, T=8, v_threshold=1.0, v_reset=0.0, tau=2.0, surrogate_function=surrogate.ATan()):super().__init__()self.train_times = 0self.epochs = 0self.max_test_acccuracy = 0self.T = Tself.static_conv = nn.Sequential(nn.Conv2d(3, 256, kernel_size=3, padding=1, bias=False),nn.BatchNorm2d(256),)self.conv = nn.Sequential(neuron.LIFNode(v_threshold=v_threshold, v_reset=v_reset, tau=tau, surrogate_function=surrogate_function, detach_reset=True),nn.Conv2d(256, 256, kernel_size=3, padding=1, bias=False),nn.BatchNorm2d(256),neuron.LIFNode(v_threshold=v_threshold, v_reset=v_reset, tau=tau, surrogate_function=surrogate_function, detach_reset=True),nn.Conv2d(256, 256, kernel_size=3, padding=1, bias=False),nn.BatchNorm2d(256),neuron.LIFNode(v_threshold=v_threshold, v_reset=v_reset, tau=tau, surrogate_function=surrogate_function, detach_reset=True),nn.MaxPool2d(2, 2),  # 16 * 16nn.Conv2d(256, 256, kernel_size=3, padding=1, bias=False),nn.BatchNorm2d(256),neuron.LIFNode(v_threshold=v_threshold, v_reset=v_reset, tau=tau, surrogate_function=surrogate_function, detach_reset=True),nn.Conv2d(256, 256, kernel_size=3, padding=1, bias=False),nn.BatchNorm2d(256),neuron.LIFNode(v_threshold=v_threshold, v_reset=v_reset, tau=tau, surrogate_function=surrogate_function, detach_reset=True),nn.Conv2d(256, 256, kernel_size=3, padding=1, bias=False),nn.BatchNorm2d(256),neuron.LIFNode(v_threshold=v_threshold, v_reset=v_reset, tau=tau, surrogate_function=surrogate_function, detach_reset=True),nn.MaxPool2d(2, 2)  # 8 * 8)self.fc = nn.Sequential(nn.Flatten(),layer.Dropout(0.5),nn.Linear(256 * 8 * 8, 128 * 4 * 4, bias=False),neuron.LIFNode(v_threshold=v_threshold, v_reset=v_reset, tau=tau, surrogate_function=surrogate_function, detach_reset=True),nn.Linear(128 * 4 * 4, 100, bias=False),neuron.LIFNode(v_threshold=v_threshold, v_reset=v_reset, tau=tau, surrogate_function=surrogate_function, detach_reset=True))self.boost = nn.AvgPool1d(10, 10)def forward(self, x):x = self.static_conv(x)out_spikes_counter = self.boost(self.fc(self.conv(x)).unsqueeze(1)).squeeze(1)for _ in range(1, self.T):out_spikes_counter += self.boost(self.fc(self.conv(x)).unsqueeze(1)).squeeze(1)return out_spikes_counterif __name__ == "__main__":net = Cifar10Net()# print(net)print('named_modules:')for name, module in net.named_modules():print('name:{}, module {}'.format(name, module))print('#####################################################')print('named_parameters:')for name, param in net.named_parameters():print('name:{}, param {}'.format(name, param))

最后输出的结果大概时以下两种不同的

上面是一些模块的详细信息。
下面就是固定的权重


对模块的信息进行判断,可能还有中间变量可以存取,比如这里判断是否存在某种属性:

     for name, module in net.named_modules():if hasattr(module, 'monitor'):spike_times[name] = 0

权重可以用来取出来采取不同的操作,比如优化:

    BN_list = ['static_conv.1', 'conv.2', 'conv.5', 'conv.9', 'conv.12', 'conv.15']for name, param in net.named_parameters():if any(BN_name in name for BN_name in BN_list):bn_params += [param]ttl_cnt += param.numel()else:weight_params += [param]w_cnt += param.numel()ttl_cnt += param.numel()

named_modules named_parameters相关推荐

  1. Jittor框架API

    Jittor框架API 这里是Jittor主模块的API文档,可以通过import jittor来获取该模块. classjittor.ExitHooks exc_handler(exc_type, ...

  2. 重学 PyTorch 第四天:Module 和 Optimizer

    Module 和 Optimizer 首先说明:在神经网络构建方面,PyTorch 也有面向对象编程和函数式编程两种形式,分别在 torch.nn 和 torch.nn.functional 模块下面 ...

  3. 图像预处理之减去RGB均值

    减去RGB均值(实例以DIV2K数据集为例) 在计算机视觉领域中,一定免不了的就是图像预处理中的 逐个样本减去mean值的过程,那么为什么一定要做这一步呢? 为什么每张图片都要减去数据集均值呢? 原因 ...

  4. 【pytorch】named_parameters()、parameters()、state_dict()==>给出网络的名字和参数的迭代器

    torch中存在3个功能极其类似的方法,它们分别是model.parameters().model.named_parameters().model.state_dict(),下面就具体来说说这三个函 ...

  5. model.named_parameters()与model.parameters()

    model.named_parameters() 迭代打印model.named_parameters()将会打印每一次迭代元素的名字和param. 并且可以更改参数的可训练属性 from torch ...

  6. Pytorch-模型参数:named_parameters()、parameters()、state_dict()区别

    torch中存在3个功能极其类似的方法,它们分别是model.parameters().model.named_parameters().model.state_dict(),下面就具体来说说这三个函 ...

  7. model.state_dict和model.parameters和model.named_parameters区别

    model.state_dict和model.parameters和model.named_parameters区别 在pytorch中,针对model,有上述方法,他们都包含模型参数,但是他们有些区 ...

  8. torch.nn.Module.named_parameters ()

    参考 torch.nn.Module.named_parameters () - 云+社区 - 腾讯云 named_parameters(prefix='', recurse=True)[source ...

  9. pytorch中的model.named_parameters()与model.parameters()

    参考链接:https://www.cnblogs.com/yqpy/p/12585331.html model.named_parameters() 迭代打印model.named_parameter ...

最新文章

  1. 鸿蒙能够替代安卓吗,华为鸿蒙2.0可以替代安卓吗,华为鸿蒙2.0优势在哪
  2. 基于存储过程的可扩展性数据访问框架
  3. Spring源码编译及过程中的一些问题总结
  4. “中国风”拯救国货彩妆?
  5. audio标签控制音量_HTML5中audio与video标签的使用
  6. mysql怎么使用sql语句查看表的编码_MySQL中使用SQL语句查看某个表的编码
  7. 五个数字从小到大排序java,五个数冒泡排序 用c语言数组定义5个数使用冒泡排序 从小到大...
  8. Entity Framework Core Like 查询揭秘
  9. How do I UPDATE from a SELECT in SQL Server?
  10. Ubuntu下安装中文输入法
  11. 设计模式之-简单工厂模式
  12. 吴裕雄--天生自然 JAVASCRIPT开发学习: 表单验证
  13. c++接口调用外部类_Java基础:Java语法糖4之内部类
  14. 优先队列-二叉堆-堆排序原理-Java相关API
  15. 怎样使用计算机定时关机,win10怎么定时关机?
  16. 找工作-体能修复8-编程-剑指offer-JZ3、JZ4、JZ5、JZ7、JZ8、JZ9、JZ10、JZ11、JZ12、JZ13、JZ14
  17. mysql 复制表结构(包括索引等)、表内容
  18. 华师大 OJ 3024
  19. linux系统中的分区与挂载,以及使用LVM逻辑卷管理器管理物理卷,卷组,逻辑卷知识点总结
  20. QuickSDK-手游出海服务器接入技巧

热门文章

  1. android环信群聊显名称,Android环信群聊插入头像和昵称
  2. Directshow完整介绍
  3. MySQL基础学习(六)——聚合函数
  4. cuda9.0和cudnn7.3 win10百度网盘地址
  5. Vue双向绑定失效 v-model
  6. Shiro的介绍与使用
  7. 反演产品的精度和空间分辨率
  8. MySQL数据库学习笔记(2)
  9. Clion~Clion常用配置和插件
  10. yolov5的anchors及bbox的编解码原理