卷积层中常用初始化方法分两种:
1.高斯初始化:
从均值为0,方差为1的高斯分布中采样,作为初始权值;PyTorch中的相关函数如下:
torch.nn.init.normal_(tensor, mean=0, std=1)
2.Xavier初始化:
参数由0均值,标准差为sqrt(2 / (fan_in + fan_out))的正态分布产生,其中fan_in和fan_out是分别权值张量的输入和输出元素数目;PyTorch中的相关函数如下:
torch.nn.init.xavier_normal_(tensor, gain=1)
而 pytorch 中的 torch.nn.Conv2d() 函数自带参数初始化方法,具体函数为:
def reset_parameters(self):
n = self.in_channels
for k in self.kernel_size:
n *= k
stdv = 1. / math.sqrt(n)
self.weight.data.uniform_(-stdv, stdv)
if self.bias is not None:
self.bias.data.uniform_(-stdv, stdv)
具体方法叫什么网上没找到,目测类似Xavier初始化。