前言
深度学习框架提供默认的随机初始化,也允许我们创建自定义的初始化方法,以满足我们通过其他规则实现初始化权重
内置初始化
均值为0,标准差为0.01
def init_normal(m):
if type(m)==nn.Linear:
nn.init.normal_(m.weight,mean=0,std=0.01)
nn.init.zeros_(m.bias)
net.apply(init_normal)
初始化为固定常量
def init_constant(m):
if type(m)==nn.Linear:
nn.init.constant_(m.weight,1)
nn.init.zeros_(m.bias)
xavire初始化
def init_xvaier(m):
if type(m)==nn.Linear:
nn.init.xavier_uniform_(m.weight)
自定义初始化
def my_init(m):
if type(m)==nn.Linear:
print("Init",*[(name,param.shape) for name,param in m.named_parameters()])
nn.init.uniform_(m.weight,-10,10)
m.weight.data*=m.weight.data.abs()>=5