torch.nn.init
torch.nn.init.calculate_gain(nonlinearity,param=None)
返回给定非线性函数的推荐增益值。值如下:
非线性 | 获得 |
---|---|
linear | 1 |
conv{1,2,3}d | 1 |
sigmoid | 1 |
tanh | 5/3 |
relu | sqrt(2) |
leaky_relu | sqrt(2/(1+negative_slope^2)) |
参数:
- nonlinearity - 非线性函数(nn.functional名称)
- param - 非线性函数的可选参数
例子:
gain = nn.init.gain('leaky_relu')
torch.nn.init.uniform(tensor, a=0, b=1)[source]
从均匀分布U(a, b)中生成值,填充输入的张量或变量
参数:
- tensor - n维的torch.Tensor或者autograd.Variable
- a - 均匀分布的下限
- b - 均匀分布的上限
例子:
w = torch.Tensor(3, 5)
print nn.init.uniform(w)
# 输出:
# 0.0470 0.9742 0.9736 0.7976 0.1219
# 0.9390 0.7575 0.9370 0.4786 0.8396
# 0.1849 0.5384 0.0625 0.3719 0.1739
# [torch.FloatTensor of size 3x5]
torch.nn.init.normal(tensor, mean=0, std=1)
从给定均值和标准差的正态分布N(mean, std)中生成值,填充输入的张量或变量
参数:
- tensor – n维的torch.Tensor或者autograd.Variable
- mean – 正态分布的平均值
- std – 正态分布的标准偏差
例子:
w = torch.Tensor(3, 5)
print torch.nn.init.normal(w)
torch.nn.init.constant(tensor, val)
使用值val填充输入Tensor或Variable 。
参数:
- tensor – n维的torch.Tensor或autograd.Variable
- val – 填充张量的值
例子:
w = torch.Tensor(3, 5)
print torch.nn.init.constant(w)
torch.nn.init.eye(tensor)
用单位矩阵来填充2维输入张量或变量。在线性层尽可能多的保存输入特性。
参数:
- tensor – 2维的torch.Tensor或autograd.Variable
例子:
w = torch.Tensor(3, 5)
print torch.nn.init.eye(w)
torch.nn.init.dirac(tensor)
用Dirac delta
函数来填充{3, 4, 5}维输入张量或变量。在卷积层尽可能多的保存输入通道特性。
参数:
- tensor – {3, 4, 5}维的torch.Tensor或autograd.Variable
例子:
w = torch.Tensor(3, 16, 5, 5)
print torch.nn.init.dirac(w)
torch.nn.init.xavier_uniform(tensor, gain=1)
根据Glorot, X.和Bengio, Y.在”理解难度训练深前馈神经网络”中描述的方法,使用均匀分布,填充张量或变量。结果张量中的值采样自U(-a, a),其中a= gain _sqrt( 2/(fan_in + fan_out))_sqrt(3). 该方法也被称为glorot
的初始化。
参数:
- tensor – n维的torch.Tensor或autograd.Variable
- gain - 可选的缩放因子
例子:
w = torch.Tensor(3, 5)
print torch.nn.init.xavier_uniform(w, gain=nn.init.calculate_gain('relu'))
torch.nn.init.xavier_normal(tensor, gain=1)
根据Glorot, X.和Bengio, Y. 于2010年在”理解难度训练深前馈神经网络”中描述的方法,采用正态分布,填充张量或变量。结果张量中的值采样自均值为0,标准差为gain * sqrt(2/(fan_in + fan_out))的正态分布。该方法也被称为glorot
的初始化。
参数:
- tensor – n维的torch.Tensor或autograd.Variable
- gain - 可选的缩放因子
例子:
>>> w = torch.Tensor(3, 5)
>>> nn.init.xavier_normal(w)
torch.nn.init.kaiming_uniform(tensor, a=0, mode='fan_in')
根据He, K等人于2015年在”深入研究了超越人类水平的性能:整流器在ImageNet分类”中描述的方法,采用正态分布,填充张量或变量。结果张量中的值采样自U(-bound, bound),其中bound = sqrt(2/((1 + a^2) fan_in)) sqrt(3)。该方法也被称为He
的初始化。
参数:
- tensor – n维的torch.Tensor或autograd.Variable
- a -此层后使用的整流器的负斜率(默认为ReLU为0)
- mode - “fan_in”(默认)或”fan_out”。”fan_in”保留正向传播时权值方差的量级,”fan_out”保留反向传播时的量级。
例子:
w = torch.Tensor(3, 5)
torch.nn.init.kaiming_uniform(w, mode='fan_in')
torch.nn.init.kaiming_normal(tensor, a=0, mode='fan_in')
根据He, K等人2015年在”深入研究了超越人类水平的性能:整流器在ImageNet分类”中描述的方法,采用正态分布,填充张量或变量。结果张量中的值采样自均值为0,标准差为sqrt(2/((1 + a^2) * fan_in))的正态分布。该方法也被称为He
的初始化。
参数:
- tensor – n维的torch.Tensor或autograd.Variable
- a -此层后使用的整流器的负斜率(默认为ReLU为0)
- mode - “fan_in”(默认)或”fan_out”。”fan_in”保留正向传播时权值方差的量级,”fan_out”保留反向传播时的量级。
w = torch.Tensor(3, 5)
print torch.nn.init.kaiming_normal(w, mode='fan_out')
torch.nn.init.orthogonal(tensor, gain=1)
使用(半)正交矩阵填充输入张量或变量,参考Saxe,A.等人2013年”深深度线性神经网络学习的非线性动力学的精确解”。输入张量必须至少是2维的,对于更高维度的张量,超出的维度会被展平。
参数:
- tensor – n维的torch.Tensor或 autograd.Variable,其中n>=2
- gain - 可选缩放因子
例子:
w = torch.Tensor(3, 5)
print torch.nn.init.orthogonal(w)
torch.nn.init.sparse(tensor, sparsity, std=0.01)
将二维输入张量或变为稀疏矩阵的非零元素,其中非零元素根据一个均值为0,标准差为std的正态分布生成。如”深度学习通过Hessian免费优化”- Martens,J.(2010)。
参数:
- tensor – n维的torch.Tensor或autograd.Variable
- sparsity - 每列中需要被设置成零的元素比例
- std - 用于生成的正态分布的标准差
- non-zero values (the) – 例子:
w = torch.Tensor(3, 5)
print torch.nn.init.sparse(w, sparsity=0.1)
译者署名
用户名 | 头像 | 职能 | 签名 |
---|---|---|---|
Song | 翻译 | 人生总要追求点什么 |