文章目录
torch.nn.init
均匀分布
-
格式
torch.nn.init.uniform_(tensor, a=0.0, b=1.0)
-
作用
从均匀分布 U ( a , b ) U(a,b) U(a,b)中生成值,填充输入的张量或变量。
-
参数
tensor
n 维的torch.Tensora
均匀分布的下界b
均匀分布的上界
-
例子
w = torch.empty(3, 5)
nn.init.uniform_(w)
正态分布
-
格式
**torch.nn.init.normal_(tensor, mean=0.0, std=1.0)**
-
作用
从给定均值和标准差的正态分布 N ( m e a n , s t d ) N(mean,std) N(mean,std)中生成值,填充输入的张量或变量。
-
参数
tensor
n维的torch.Tensormean
正态分布的均值std
正态分布的标准差
w = torch.empty(3, 5)
nn.init.normal_(w)
常数分布
-
格式
torch.nn.init.constant_(tensor, val)
-
作用
用
val
的值填充输入的张量或变量 -
参数
tensor
n维的torch.Tensor 或 autograd.Variableval
用来填充张量的值
w = torch.empty(3, 5)
nn.init.constant_(w, 0.3)
全1分布
-
格式
torch.nn.init.ones_(tensor)
-
作用
用全0填充张量
-
参数
tensor
n维的torch.Tensor
-
例子
w = torch.empty(3, 5)
nn.init.ones_(w)
全0分布
-
格式
torch.nn.init.zeros_(tensor)
-
作用
用全1填充张量
-
参数
tensor
n维的torch.Tensor
-
例子
w = torch.empty(3, 5)
nn.init.zeros_(w)
对角分布
-
格式
torch.nn.init.eye_(tensor)
-
作用
用单位矩阵来填充2维输入张量或变量
-
参数
tensor
2维的torch.Tensor 或 autograd.Variable
w = torch.empty(3, 5)
nn.init.eye_(w)
dirac 分布
-
格式
torch.nn.init.dirac_(tensor, groups=1)
-
作用
用Dirac δ函数来填充{3, 4, 5}维输入张量或变量。在卷积层尽可能多的保存输入通道特性
-
参数
tensor
{3, 4, 5}维的torch.Tensor 或 autograd.Variable
-
例子
w = torch.empty(3, 16, 5, 5) nn.init.dirac_(w) w = torch.empty(3, 24, 5, 5) nn.init.dirac_(w, 3)
xavier_uniform 分布
-
格式
torch.nn.init.xavier_uniform_(tensor, gain=1.0)
-
作用
用一个均匀分布生成值,填充输入的张量或变量。
-
参数
tensor
n维的torch.Tensorgain
可选的缩放因子
w = torch.empty(3, 5)
nn.init.xavier_uniform_(w, gain=nn.init.calculate_gain('relu'))
xavier_normal 分布
-
格式
torch.nn.init.xavier_normal_(tensor, gain=1.0)
-
作用
用一个正态分布生成值,填充输入的张量或变量。
-
参数
tensor
n维的torch.Tensorgain
可选的缩放因子
w = torch.empty(3, 5)
nn.init.xavier_normal_(w)
kaiming_uniform 分布
-
格式
torch.nn.init.kaiming_uniform_(tensor, a=0, mode='fan_in', nonlinearity='leaky_relu')
-
作用
用一个均匀分布生成值,填充输入的张量或变量。
-
参数
tensor
n维的torch.Tensor或autograd.Variablea
这层之后使用的rectifier的斜率系数(ReLU的默认值为0)mode
可以为“fan_in
”(默认)或 “fan_out
”
“fan_in
”保留前向传播时权值方差的量级
“fan_out
”保留反向传播时的量级nonlinearity=‘leaky_relu’
非线性函数 建议“relu”或“leaky_relu”(默认值)使用。
w = torch.empty(3, 5)
nn.init.xavier_normal_(w)
w = torch.empty(3, 5)
nn.init.kaiming_uniform_(w, mode='fan_in', nonlinearity='relu')
kaiming_normal 分布
-
格式
torch.nn.init.kaiming_normal_(tensor, a=0, mode='fan_in', nonlinearity='leaky_relu')
-
作用
用一个正态分布生成值,填充输入的张量或变量。
-
参数
tensor
n维的torch.Tensor或 autograd.Variablea
这层之后使用的rectifier的斜率系数(ReLU的默认值为0)mode
可以为“fan_in
”(默认)或 “fan_out
”fan_in
保留前向传播时权值方差的量级fan_out
保留反向传播时的量级
w = torch.empty(3, 5)
nn.init.kaiming_normal_(w, mode='fan_out', nonlinearity='relu')
正交矩阵
-
格式
torch.nn.init.orthogonal_(tensor, gain=1)
-
作用
用一个(半)正交矩阵填充输入张量。
-
参数
tensor
一个n维的tensor,其中 n≥2gain
可选比例系数
w = torch.empty(3, 5)
nn.init.orthogonal_(w)
稀疏矩阵
-
格式
torch.nn.init.sparse_(tensor, sparsity, std=0.01)
-
作用
将2D输入张量填充为稀疏矩阵,其中非零元素将从正态分布 N ( 0 , 0.01 ) N(0,0.01) N(0,0.01)中提取。
-
参数
**tensor
** 一个n维的torch.tensor张量sparsity
每一列中元素的比例设置为零std
用于产生非零值的正态分布的标准差
w = torch.empty(3, 5)
nn.init.sparse_(w, sparsity=0.1)