时间:2021-05-23
1、Motivation:
I wanna modify the value of some param;
I wanna check the value of some param.
The needed function:
2、state_dict() #generator type
model.modules()#generator type
named_parameters()#OrderDict type
from torch import nnimport torch#creat a simple modelmodel = nn.Sequential( nn.Conv3d(1,16,kernel_size=1), nn.Conv3d(16,2,kernel_size=1))#tend to print the W of this layerinput = 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'])#scheme2params = list(model.named_parameters())#get the index by debugingprint(params[2][0])#nameprint(params[2][1].data)#data#scheme3params = {}#change the tpye of 'generator' into dictfor name,param in model.named_parameters():params[name] = param.detach().cpu().numpy()print(params['0.weight'])#scheme4for layer in model.modules():if(isinstance(layer,nn.Conv3d)): print(layer.weight)#打印每一层的参数名和参数值#schemem1(recommended)for name,param in model.named_parameters(): print(name,param)#scheme2for name in model.state_dict(): print(name) print(model.state_dict()[name])以上这篇pytorch获取模型某一层参数名及参数值方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
用pytorch训练一个神经网络时,我们通常会很关心模型的参数总量。下面分别介绍来两种方法求模型参数一.求得每一层的模型参数,然后自然的可以计算出总的参数。1.
在常见的pytorch代码中,我们见到的初始化方式都是调用init类对每层所有参数进行初始化。但是,有时我们有些特殊需求,比如用某一层的权重取优化其它层,或者手
pytorch中的state_dict是一个简单的python的字典对象,将每一层与它的对应参数建立映射关系.(如model的每一层的weights及偏置等等)
加载模型字典逐一判断每一层,如果该层是bn的runningmean,就取出参数并取平均作为该层的代表对保存的每个BN层的数值进行曲线可视化fromfunctoo
问题:训练好的网络模型想知道中间某一层的权重或者看看中间某一层的特征,如何处理呢?1、获取某一层权重,并保存到excel中;以resnet18为例说明: