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