1. torch.nn.init 概述
因为神经网络的训练过程其实是寻找最优解的过程,所以神经元的初始值非常重要。如果初始值恰好在最优解附近,神经网络的训练会非常简单。而当神经网络的层数增加以后,一个突出的问题就是梯度消失和梯度爆炸。前者指的是由于梯度接近 0,导致神经元无法进行更新;后者指的是误差梯度在更新中累积得到一个非常大的梯度,这样的梯度会大幅度更新网络参数,进而导致网络不稳定。
torch.nn.init
模块提供了合理初始化初始值的方法。它一共提供了四类初始化方法:
- Xavier 分布初始化;
- Kaiming 分布初始化;
- 均匀分布、正态分布、常数分布初始化;
- 其它初始化。