pytorch官方文档中提到了Xavier初始化,不解,查之。
weights = torch.randn(784, 10) / math.sqrt(784)
“Xavier”初始化方法是一种很有效的神经网络初始化方法,方法来源于2010年的一篇论文《Understanding the difficulty of training deep feedforward neural networks》。
文章主要的目标就是使得每一层输出的方差应该尽量相等。下面进行推导:每一层的权重应该满足哪种条件才能实现这个目标。
我们将用到以下和方差相关的定理:
假设有随机变量x和w,它们都服从均值为0,方差为σ的分布,且独立同分布,那么:
• w*x就会服从均值为0,方差为σ*σ的分布
• w*x+w*x就会服从均值为0,方差为2*σ*σ的分布
文章实验用的激活函数是tanh激活函数,函数形状如下左图,右图是其导数的函数形状。
从上图可以看出,当x处于0附近时,其导数/斜率接近与1,可