本文简要介绍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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。