在我们搭建网络模型时,初始化模型参数是非常重要的,过大或者过小以及参数分布
都会影响模型的收敛
以及训练速度
。
但是对于一些已经实现好的层,这些层已经根据不同层的特点实现好了参数初始化
策略,例如Linear和Conv2d等已经实现好了内部参数,不需要手动设置。
但是我们也可以使用自定义的初始化策略来代替pytorch默认的参数初始化策略,可以使用nn模块中的init
来实现这个功能,该模块内部已经实现了许多参数初始化策略,例如:xavier_uniform
、xavier_normal
等。
下面我们使用实例来说明如何使用:
我们首先需要定义好需要的参数矩阵,然后利用nn.init模块中的参数初始化函数进行初始化,只需要把需要修改的参数矩阵传入即可。
如果对于nn.init模块中没有我们需要的初始化策略,我们可以自己定义函数进行初始化,无非就是定义一些运算修改参数矩阵罢了。