美文网首页
参数权重初始化:凯明初始化函数

参数权重初始化:凯明初始化函数

作者: lizg | 来源:发表于2022-09-13 10:50 被阅读0次

    问题:
      权重初始化对神经网络最终的收敛有重要影响。梯度爆炸:当损失函数梯度过大,导致损失函数在最小值附近振荡;梯度消失:当损失函数梯度过小,导致损失函数未到最小值就提前收敛。
      原则:如何找到合适的初始化函数?1.激活函数的均值为0;2.每一层激活值的方差应该保持一致。
      解决方案:Kaiming初始化函数:
        1)在给定层上创建适合权重矩阵的维度的张量,并用服从标准正态分布的随机数字填充(均值为0,方差为1);
        2)将每个随机选择的数字乘以sqrt(2/n),其中n是从上一层的输入给定层的传入连接数;
        3)偏置张量初始化为0。

    1.Kaiming初始化函数的定义

    import torch
    import math
    def kaiming(n, h):
        return torch.randn(n, h) * math.sqrt(2./n)
    def relu(x):
        return x.clamp_min(0.)
    

    2.凯明初始化的均值和标准差

    x = torch.randn(512)
    for i in range(100):
        w = kaiming(512, 512)
        x = relu(w @ x)
        if i%10 == 0:
            print(x.mean(), x.std())
    

    相关文章

      网友评论

          本文标题:参数权重初始化:凯明初始化函数

          本文链接:https://www.haomeiwen.com/subject/iczcortx.html