权重初始化之Kaiming初始化
时间: 2023-08-06 07:09:47 浏览: 243
对Pytorch神经网络初始化kaiming分布详解
5星 · 资源好评率100%
Kaiming初始化(又称He初始化)是一种常用的权重初始化方法,主要用于激活函数为ReLU的神经网络中。Kaiming初始化的基本思想是根据激活函数的特点,调整权重的方差,使得输入和输出的方差相等,从而避免了深度神经网络训练时的梯度消失或爆炸问题。
具体地,Kaiming初始化的权重是从均值为0、方差为$\frac{2}{n}$的正态分布中随机采样得到的,其中$n$表示前一层神经元的个数。对于ReLU激活函数,Kaiming初始化可以将方差调整为$\frac{2}{n}$,对于LeakyReLU激活函数,可以将方差调整为$\frac{2}{(1+a^2)n}$,其中$a$为LeakyReLU的负斜率。
在PyTorch中,可以使用`torch.nn.init`模块中的`kaiming_normal_`或`kaiming_uniform_`函数来进行Kaiming初始化。例如:
```python
import torch.nn as nn
# 定义一个卷积层
conv = nn.Conv2d(in_channels=3, out_channels=16, kernel_size=3, stride=1, padding=1)
# Kaiming初始化
nn.init.kaiming_normal_(conv.weight, mode='fan_out', nonlinearity='relu')
```
在以上示例中,`conv`是一个输入通道为3,输出通道为16,卷积核大小为3x3的卷积层。`nn.init.kaiming_normal_`函数将该卷积层的权重进行了Kaiming初始化。其中,`mode='fan_out'`表示权重的方差应该除以输出通道数,`nonlinearity='relu'`表示使用ReLU激活函数。
阅读全文