
参考:https://pytorch.org/docs/stable/nn.html
torch.nn.init.
constant_
(tensor, val)
使用参数val的值填满输入tensor
参数:
- tensor:一个n维的torch.Tensor
- val:用于填满tensor的值
举例:
w = torch.empty(,) nn.init.constant_(w, 0.3)
返回:
tensor([[0.3000, 0.3000, 0.3000, 0.3000, 0.3000], [0.3000, 0.3000, 0.3000, 0.3000, 0.3000], [0.3000, 0.3000, 0.3000, 0.3000, 0.3000]])
torch.nn.init.
kaiming_uniform_
(tensor, a=0, mode='fan_in', nonlinearity='leaky_relu')
根据“Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification” - He, K. et al. (2015)中所描述的方法,使用均匀分布生成值,然后填入输入tensor中
结果tensor中的值采样自U(-bound, bound),其中的bound为:
该方法被称为He initialization
目的是使得每一卷积层的输出的方差都为1
参数:
- tensor – n维的torch.Tensor
- a -这层之后使用的nonlinearity的斜率系数(ReLU的默认值为0)
- mode -可以为“fan_in”(默认)或“fan_out”。“fan_in”保留前向传播时权值方差的量级,即是想让前向传播的输出方差为1;“fan_out”保留反向传播时的量级,即是想让后向传播的输出方差为1。
- nonlinearity – 之后使用的非线性函数,即激活函数 (nn.functional name),推荐使用‘relu’或‘leaky_relu’ (默认).
举例:
w = torch.empty(,) nn.init.kaiming_uniform_(w, mode='fan_in', nonlinearity='relu')
返回:
tensor([[ 0.2143, 0.7102, 0.1721, 0.3857, -0.6991], [ 0.3828, 0.7956, 0.8884, -0.4458, 0.3915], [ 0.8258, -0.7752, -0.7310, 0.8955, -0.1472]])