本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
