现在做网站用什么语言好,网站建设页面生成,seo费用,重庆招聘网官方网站分类目录#xff1a;《深入浅出Pytorch函数》总目录 相关文章#xff1a; 深入浅出Pytorch函数——torch.nn.init.calculate_gain 深入浅出Pytorch函数——torch.nn.init.uniform_ 深入浅出Pytorch函数——torch.nn.init.normal_ 深入浅出Pytorch函数——torch.nn.init.c…分类目录《深入浅出Pytorch函数》总目录 相关文章 · 深入浅出Pytorch函数——torch.nn.init.calculate_gain · 深入浅出Pytorch函数——torch.nn.init.uniform_ · 深入浅出Pytorch函数——torch.nn.init.normal_ · 深入浅出Pytorch函数——torch.nn.init.constant_ · 深入浅出Pytorch函数——torch.nn.init.ones_ · 深入浅出Pytorch函数——torch.nn.init.zeros_ · 深入浅出Pytorch函数——torch.nn.init.eye_ · 深入浅出Pytorch函数——torch.nn.init.dirac_ · 深入浅出Pytorch函数——torch.nn.init.xavier_uniform_ · 深入浅出Pytorch函数——torch.nn.init.xavier_normal_ · 深入浅出Pytorch函数——torch.nn.init.kaiming_uniform_ · 深入浅出Pytorch函数——torch.nn.init.kaiming_normal_ · 深入浅出Pytorch函数——torch.nn.init.trunc_normal_ · 深入浅出Pytorch函数——torch.nn.init.orthogonal_ · 深入浅出Pytorch函数——torch.nn.init.sparse_ torch.nn.init模块中的所有函数都用于初始化神经网络参数因此它们都在torc.no_grad()模式下运行autograd不会将其考虑在内。
根据Saxe, A等人在《Exact solutions to the nonlinear dynamics of learning in deep linear neural networks》中描述的方法用半正交矩阵填充输入的张量或变量。输入张量必须至少是2维的对于更高维度的张量超出的维度会被展平视作行等于第一个维度列等于稀疏矩阵乘积的2维表示其中非零元素生成自 N ( 0 , std 2 ) N(0, \text{std}^2) N(0,std2)。
语法
torch.nn.init.orthogonal_(tensor, gain1)参数
tensor[Tensor] 一个 N N N维张量torch.Tensor其中 N ≥ 2 N\geq 2 N≥2gain[可选] 比例因子
返回值
一个torch.Tensor且参数tensor也会更新
实例
w torch.empty(3, 5)
nn.init.orthogonal_(w)函数实现
def orthogonal_(tensor, gain1):rFills the input Tensor with a (semi) orthogonal matrix, asdescribed in Exact solutions to the nonlinear dynamics of learning in deeplinear neural networks - Saxe, A. et al. (2013). The input tensor must haveat least 2 dimensions, and for tensors with more than 2 dimensions thetrailing dimensions are flattened.Args:tensor: an n-dimensional torch.Tensor, where :math:n \geq 2gain: optional scaling factorExamples: # xdoctest: REQUIRES(env:TORCH_DOCTEST_LAPACK) w torch.empty(3, 5) nn.init.orthogonal_(w)if tensor.ndimension() 2:raise ValueError(Only tensors with 2 or more dimensions are supported)if tensor.numel() 0:# no-opreturn tensorrows tensor.size(0)cols tensor.numel() // rowsflattened tensor.new(rows, cols).normal_(0, 1)if rows cols:flattened.t_()# Compute the qr factorizationq, r torch.linalg.qr(flattened)# Make Q uniform according to https://arxiv.org/pdf/math-ph/0609050.pdfd torch.diag(r, 0)ph d.sign()q * phif rows cols:q.t_()with torch.no_grad():tensor.view_as(q).copy_(q)tensor.mul_(gain)return tensor