训练好了一个网络,想要查看网络里面参数是否经过BP算法优化过,可以直接读取网络里面的参数,如果一直是随机初始化的值,则证明训练代码有问题,需要改。下面介绍如何直接读取网络的weight和bias。(1)获取参数的变量名。可以使用一下函数获取变量名:defvars_generate1(self,scope_name_var):return[varforvarintf.global_variables()ifscope_name_varinvar.name]输入你想要读取的变量的一部分的名称(scope_name_v...
继续阅读 >
分类:weight
2020
10-08
10-08
pytorch中的weight-initilzation用法
pytorch中的权值初始化官方论坛对weight-initilzation的讨论torch.nn.Module.apply(fn)torch.nn.Module.apply(fn)#递归的调用weights_init函数,遍历nn.Module的submodule作为参数#常用来对模型的参数进行初始化#fn是对参数进行初始化的函数的句柄,fn以nn.Module或者自己定义的nn.Module的子类作为参数#fn(Module->None)?functiontobeappliedtoeachsubmodule#Returns:self#Returntype:Module例子:defweights_...
继续阅读 >
2020
10-08
10-08
pytorch查看模型weight与grad方式
在用pdbdebug的时候,有时候需要看一下特定layer的权重以及相应的梯度信息,如何查看呢?1.首先把你的模型打印出来,像这样2.然后观察到model下面有module的key,module下面有features的key,features下面有(0)的key,这样就可以直接打印出weight了,在pdbdebug界面输入pmodel.module.features[0].weight,就可以看到weight,输入pmodel.module.features[0].weight.grad就可以查看梯度信息补充知识:查看Pytorch网络的各层...
继续阅读 >
2020
10-08
10-08
pytorch 网络参数 weight bias 初始化详解
权重初始化对于训练神经网络至关重要,好的初始化权重可以有效的避免梯度消失等问题的发生。在pytorch的使用过程中有几种权重初始化的方法供大家参考。注意:第一种方法不推荐。尽量使用后两种方法。#notrecommenddefweights_init(m):classname=m.__class__.__name__ifclassname.find('Conv')!=-1:m.weight.data.normal_(0.0,0.02)elifclassname.find('BatchNorm')!=-1:m.weight.data.normal_(1.0,0.02)m.bi...
继续阅读 >