如何在paddle框架下进行网络层参数的初始化
收藏
基于pytorch框架实现的网络中自定义了如下函数:
def weight_init(module):
for n,m in module.named_children():
if isinstance(m,nn.Conv2d):
nn.init.kaiming_normal_(m.weight,mode='fan_in',nonlinearity='relu')
if m.bias is not None:
nn.init.zeros_(m.bias)
Paddle框架下的paddle.nn.initializer也提供了nn.initializer.KaimingNormal()、nn.initializer.nn.initializer.Constant()函数,但用法与别的框架不一样。参考Paddle文档后对函数做出修改:
def weight_init(Layer):
for n, m in Layer.named_children():
if isinstance(m, nn.Conv2D):
m.weight = nn.Linear(weight_attr = nn.initializer.KaimingNormal())
if m.bias is not None:
m.bias = nn.Linear(weight_attr = nn.initializer.Constant(value = 0.))
但此时Linear层缺少in_channels、out_channels,即对应的m_weight、m_bias的维度信息。
求教,如何去求解迭代器返回的m中weight、m_bias的维度信息,或者有其它的写法来实现函数功能
0
收藏
请登录后评论
飞桨我记得都是自动初始化了的,你可以看看文档或者提个issue
试试m.weight_attr=......
等待高人答复