权重初始化
2021-09-22 14:17:45 0 举报
罗列了几种网络权重初始化方式以及权重初始化的实际使用
作者其他创作
大纲/内容
需要确定的信息,在网络结构的外层是否需要先设定一个weight变量,然后再对其分布类型进行改变?
weight的维度是否和输入数据的维度相对应?
对网络层权重初始化,是否该使用.weight直接引用?
在未调用网络前设置weight参数
根据网络输入数据的维度设置一个初始Weght Tensor
eg:torch.from_numpy(np.array([1,1])),后续将numpy格式数据转为Tensor。
torch.nn.init (使weight满足设定的不同分布)
ones_
torch.nn.init.ones_(weight),值全部设置为1
zeros_
torch.nn.init.zeros_(weight),值全部设置为0
normal_
weight(Tensor).normal_(mean,std)/torch.nn.init.normal_(tensor,mean,std)
uniform_
weight(Tensor).uniform_(a,b)/torch.nn.init.uniform_(tensor,a,b)
constant_
torch.nn.init.constant_(weight,c),值全部设置为设定的常数c
sparse_
torch.nn.init.sparse_(tensor, sparsity, std=0.01)
Xavier_uniform_ & Xavier_normal_
kaiming_uniform_&kaiming_normal_
对网络结构各网络层的weight初始化
m.weight.data
得到的是一个Tensor张量(向量),不可训练的类型
eg:利用nn.init.constant_(m.weight.data,value=10) 对该网络层的权重进行初始化,但是得到的初始化值不参与网络的学习(迭代)
m.weight
得到的是一个parameter的变量,可以训练(计算梯度)
0 条评论
下一页