本文简要介绍python语言中 torch.nn.utils.parametrizations.orthogonal 的用法。
用法:
torch.nn.utils.parametrizations.orthogonal(module, name='weight', orthogonal_map=None, *, use_trivialization=True)module(torch.nn.Module) -在其上注册参数化的模块。
name(str,可选的) -使正交的张量的名称。默认值:
"weight"。orthogonal_map(str,可选的) -以下之一:
"matrix_exp"、"cayley"、"householder"。默认值:"matrix_exp"如果矩阵是方阵或复数,则"householder"否则。use_trivialization(bool,可选的) -是否使用动态平凡化框架。默认值:
True。
具有注册到指定权重的正交参数化的原始模块
将正交或酉参数化应用于矩阵或一组矩阵。
让是或者, 参数化矩阵是正交作为
其中是当是复数时的共轭转置,当是实值时的转置,是
n维单位矩阵。简而言之,只要 时, 将具有正交列,否则将具有正交行。如果张量有两个以上的维度,我们将其视为一批形状为
(…, m, n)的矩阵。矩阵 可以根据原始张量通过三个不同的
orthogonal_map参数化:"matrix_exp"/"cayley":matrix_exp()和 Cayley map 应用于 skew-symmetric 以给出正交矩阵。"householder":计算 Householder 反射器的乘积 (householder_product())。
"matrix_exp"/"cayley"通常使参数化权重比"householder"收敛得更快,但对于非常薄或非常宽的矩阵,它们的计算速度较慢。如果
use_trivialization=True(默认),参数化实现“Dynamic Trivialization Framework”,其中一个额外的矩阵存储在module.parametrizations.weight[0].base下。这有助于参数化层的收敛,但会消耗一些额外的内存。见Trivializations for Gradient-Based Optimization on Manifolds。的初始值:如果原始张量未参数化且
use_trivialization=True(默认),则 的初始值是原始张量的初始值,如果它是正交的(或在复杂情况下是单一的)并且它是否则通过 QR 分解正交化(参见torch.linalg.qr())。当它没有参数化和orthogonal_map="householder"即使在use_trivialization=False时也会发生同样的情况。否则,初始值是应用于原始张量的所有注册参数化组合的结果。注意
此函数是使用
register_parametrization()中的参数化函数实现的。例子:
>>> orth_linear = orthogonal(nn.Linear(20, 40)) >>> orth_linear ParametrizedLinear( in_features=20, out_features=40, bias=True (parametrizations): ModuleDict( (weight): ParametrizationList( (0): _Orthogonal() ) ) ) >>> Q = orth_linear.weight >>> torch.dist(Q.T @ Q, torch.eye(20)) tensor(4.9332e-07)
参数:
返回:
相关用法
- Python PyTorch orthogonal_用法及代码示例
- Python PyTorch ones_用法及代码示例
- Python PyTorch optimize_for_inference用法及代码示例
- Python PyTorch ones_like用法及代码示例
- Python PyTorch outer用法及代码示例
- Python PyTorch ones用法及代码示例
- Python PyTorch one_hot用法及代码示例
- Python PyTorch frexp用法及代码示例
- Python PyTorch jvp用法及代码示例
- Python PyTorch cholesky用法及代码示例
- Python PyTorch vdot用法及代码示例
- Python PyTorch ELU用法及代码示例
- Python PyTorch ScaledDotProduct.__init__用法及代码示例
- Python PyTorch gumbel_softmax用法及代码示例
- Python PyTorch get_tokenizer用法及代码示例
- Python PyTorch saved_tensors_hooks用法及代码示例
- Python PyTorch positive用法及代码示例
- Python PyTorch renorm用法及代码示例
- Python PyTorch AvgPool2d用法及代码示例
- Python PyTorch MaxUnpool3d用法及代码示例
- Python PyTorch Bernoulli用法及代码示例
- Python PyTorch Tensor.unflatten用法及代码示例
- Python PyTorch Sigmoid用法及代码示例
- Python PyTorch Tensor.register_hook用法及代码示例
- Python PyTorch ShardedEmbeddingBagCollection.named_parameters用法及代码示例
注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.nn.utils.parametrizations.orthogonal。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
