训练了一些网络,发现一个问题,怎样查卷积核的初始权重,以及初始权重是如何配置的?
1.首先了解初始化的目的
使得神经网络在训练过程中学习到有用的信息,这意味着参数的梯度能为0。那么参数初始化应该满足:各层激活值不会出现饱和现象;各层激活值不为0。
2.随机生成小的随机数
我们将参数初始化为小的随机数。其中randn从均值为0,标准差是1的高斯分布中取样。需要注意的是参数初始值不能取得太小,因为小的参数在反向传播时会导致小的梯度,对于深度网络来说,也会产生梯度消失问题,降低参数的收敛速度。
3.Pytorch下卷积神经网络的卷积核的初始权重
这就是整体的卷积核权重初始化过程,利用了kaiming_normal初始化,均值为0,方差计算得到。
当然也可以自己定义卷积核的初始权重,这样是自己根据计算经验得到的。