您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:pytorch获取模型某一层参数名及参数值

51自学网 2020-09-19 17:14:50
  python
这篇教程pytorch获取模型某一层参数名及参数值写得很实用,希望能帮到您。

Motivation:

  1. I wanna modify the value of some param;
  2. I wanna check the value of some param.

The needed function:

  1. state_dict() #generator type
  2. model.modules()#generator type
  3. named_parameters()#OrderDict type
from torch import nn
import torch
#creat a simple model
model = nn.Sequential(
   nn.Conv3d(1,16,kernel_size=1),
   nn.Conv3d(16,2,kernel_size=1))#tend to print the W of this layer
input = torch.randn([1,1,16,256,256])
if torch.cuda.is_available():
   print('cuda is avaliable')
   model.cuda()
   input = input.cuda()
#打印某一层的参数名
for name in model.state_dict():
   print(name)
#Then  I konw that the name of target layer is '1.weight'

#schemem1(recommended)
print(model.state_dict()['1.weight'])

#scheme2
params = list(model.named_parameters())#get the index by debuging
print(params[2][0])#name
print(params[2][1].data)#data

#scheme3
params = {}#change the tpye of 'generator' into dict
for name,param in model.named_parameters():
params[name] = param.detach().cpu().numpy()
print(params['0.weight'])

#scheme4
for layer in model.modules():
if(isinstance(layer,nn.Conv3d)):
   print(layer.weight)

#打印每一层的参数名和参数值
#schemem1(recommended)
for name,param in model.named_parameters():
   print(name,param)

#scheme2
for name in model.state_dict():
   print(name)
   print(model.state_dict()[name])

获取Pytorch中间某一层权重或者特征
python 对MySQL操作进行封装
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。