Introduce

在pytorch中,torch.nn.Module模块中的state_dict变量存放训练过程中需要学习的权重和偏执系数,state_dict作为python的字典对象将每一层的参数映射成tensor张量,需要注意的是torch.nn.Module模块中的state_dict只包含卷积层和全连接层的参数,当网络中存在batchnorm时,例如vgg网络结构,torch.nn.Module模块中的state_dict也会存放batchnorm's running_mean,关于batchnorm详解可见https://blog.csdn.net/wzy_zju/article/details/81262453

torch.optim模块中的Optimizer优化器对象也存在一个state_dict对象,此处的state_dict字典对象包含state和param_groups的字典对象,而param_groups key对应的value也是一个由学习率,动量等参数组成的一个字典对象。

因为state_dict本质上Python字典对象,所以可以很好地进行保存、更新、修改和恢复操作(python字典结构的特性),从而为PyTorch模型和优化器增加了大量的模块化。

Sample

通过一个简单的案例来输出state_dict字典对象中存放的变量

#encoding:utf-8import torch
import torch.nn as nn
import torch.optim as optim
import torchvision
import numpy as mp
import matplotlib.pyplot as plt
import torch.nn.functional as F#define model
class TheModelClass(nn.Module):def __init__(self):super(TheModelClass,self).__init__()self.conv1=nn.Conv2d(3,6,5)self.pool=nn.MaxPool2d(2,2)self.conv2=nn.Conv2d(6,16,5)self.fc1=nn.Linear(16*5*5,120)self.fc2=nn.Linear(120,84)self.fc3=nn.Linear(84,10)def forward(self,x):x=self.pool(F.relu(self.conv1(x)))x=self.pool(F.relu(self.conv2(x)))x=x.view(-1,16*5*5)x=F.relu(self.fc1(x))x=F.relu(self.fc2(x))x=self.fc3(x)return xdef main():# Initialize modelmodel = TheModelClass()#Initialize optimizeroptimizer=optim.SGD(model.parameters(),lr=0.001,momentum=0.9)#print model's state_dictprint('Model.state_dict:')for param_tensor in model.state_dict():#打印 key value字典print(param_tensor,'\t',model.state_dict()[param_tensor].size())#print optimizer's state_dictprint('Optimizer,s state_dict:')for var_name in optimizer.state_dict():print(var_name,'\t',optimizer.state_dict()[var_name])if __name__=='__main__':main()

具体的输出结果如下:可以很清晰的观测到state_dict中存放的key和value的值

Model.state_dict:
conv1.weight     torch.Size([6, 3, 5, 5])
conv1.bias   torch.Size([6])
conv2.weight     torch.Size([16, 6, 5, 5])
conv2.bias   torch.Size([16])
fc1.weight   torch.Size([120, 400])
fc1.bias     torch.Size([120])
fc2.weight   torch.Size([84, 120])
fc2.bias     torch.Size([84])
fc3.weight   torch.Size([10, 84])
fc3.bias     torch.Size([10])
Optimizer,s state_dict:
state    {}
param_groups     [{'lr': 0.001, 'momentum': 0.9, 'dampening': 0, 'weight_decay': 0, 'nesterov': False, 'params': [367949288, 367949432, 376459056, 381121808, 381121952, 381122024, 381121880, 381122168, 381122096, 381122312]}]

【PyTorch】state_dict详解相关推荐

  1. pytorch函数详解

    pytorch函数详解 在typora这里写之后复制到简书上 1. torchvision 1.1 transforms.Compose(transforms) 把几个转换组合 example: fr ...

  2. YOLO V1~V7论文及Pytorch实现详解

    YOLO~V1论文及Pytorch实现详解 论文地址:https://paperswithcode.com/paper/you-only-look-once-unified-real-time-obj ...

  3. 对比损失的PyTorch实现详解

    对比损失的PyTorch实现详解 本文以SiT代码中对比损失的实现为例作介绍. 论文:https://arxiv.org/abs/2104.03602 代码:https://github.com/Sa ...

  4. 将卷积引入transformer中VcT(Introducing Convolutions to Vision Transformers)的pytorch代码详解

    文章目录 1. Motivation: 2. Method 2.1 Convolutional Token Embedding 模块 2.2 Convolutional Projection For ...

  5. BilSTM 实体识别_NLP-入门实体命名识别(NER)+Bilstm-CRF模型原理Pytorch代码详解——最全攻略

    最近在系统地接触学习NER,但是发现这方面的小帖子还比较零散.所以我把学习的记录放出来给大家作参考,其中汇聚了很多其他博主的知识,在本文中也放出了他们的原链.希望能够以这篇文章为载体,帮助其他跟我一样 ...

  6. BilSTM 实体识别_NLP入门实体命名识别(NER)+BilstmCRF模型原理Pytorch代码详解——最全攻略...

    来自 | 知乎   作者 | seven链接 | https://zhuanlan.zhihu.com/p/79552594编辑 | 机器学习算法与自然语言处理公众号本文仅作学术分享,如有侵权,请联系 ...

  7. window10下拯救者笔记本RTX3060laptop配置CUDA11.0 pytorch版详解

    cuda版本11.0 torch=1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 可以直接用命令: pip install torch== ...

  8. PointNet模型的Pytorch代码详解

    前言 关于PointNet模型的构成.原理.效果等等论文部分内容,我在之前一篇论文中写到过,可以参考这个链接:PointNet论文笔记    下边我就直接放一张网络组成图,并对代码进行解释,我以一种比 ...

  9. state_dict详解

    参考   state_dict - 云+社区 - 腾讯云 在pytorch中,torch.nn.Module模块中的state_dict变量存放训练过程中需要学习的权重和偏执系数,state_dict ...

最新文章

  1. java实现将汉语转换为拼音
  2. 【问链财经-区块链基础知识系列】 第十八课 区块链应用于贷款结算
  3. 5.VMware View 4.6安装与部署-安装view agent与模版
  4. IOS-字符串太长换行拼接
  5. Android 闹钟最终版
  6. java足球游戏毕业设计,java毕业设计_springboot框架的校园足球管理平台
  7. eclipse远程连接hadoop_hadoop集群搭建详细方法
  8. sass穿透 scoped 的情况下 去修改ui组件的样式
  9. python文件操作with语句是不是不用关闭文件_分析用Python脚本关闭文件操作的机制...
  10. 【jquery调用ajax老是进error,不进success】 bug命名:小雨
  11. mysql中ang_MySQL笔记
  12. 《大数据技术原理与应用》—— 提纲
  13. 简易看房加权评估案例C++
  14. 树莓派进阶之路 (031) -字符问题(1) - GBK汉字编码表(转)
  15. 归零的心态,做好团队回顾
  16. 古诗词网站源码 php,帝国cms 诗词整站源码
  17. 关于高速光耦6n137的使用总结_高速光耦6n137典型应用电路图汇总(多谐振荡/光电隔离器/光耦开关)...
  18. 四电极体脂称解决方案——测量原理
  19. 数据分析常见的英文缩写(一)
  20. Begging_Rust(译):丢弃,移动和复制(第二十一章)

热门文章

  1. c语言中用FILE类型的使用
  2. 3.3 使用广播信道的数据链路层
  3. 甘肃首例cn告com侵权案开审
  4. Capl之FlexRay脚本id的大致解读
  5. 用WinRAR解压7z.001格式的文件
  6. FICO总账会计操作学习记录
  7. cmd命令行 盘符/文件夹 切换
  8. 如何利用python实现图片转化字符画
  9. 如何保证PCB孔铜高可靠?
  10. OTFS从零开始11 10