xavier_uniform_(也叫Glorot uniform initialization) 我觉得是特殊的uniform。
xavier_uniform_ 的等价 uniform_ 初始化代码:
# 计算 xavier uniform 的范围 a
a = np.sqrt(6.0 / (fan_in + fan_out))
# 使用与 xavier_uniform_ 等价的范围进行初始化
torch.nn.init.uniform_(emb.weight, -a, a)
也可以一行代码搞定:
nn.init.xavier_uniform_(emb.weight)
一般的均匀分布初始化:
stdv = 1. / np.sqrt(self.cur_size)
torch.nn.init.uniform_(emb.weight, -stdv, stdv)
正态分布(也叫高斯分布)初始化:
# 使用正态分布初始化权重,均值为0,标准差为stdv
torch.nn.init.normal_(emb.weight, mean=0.0, std=stdv)