當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python PyTorch Transform用法及代碼示例


本文簡要介紹python語言中 torch.distributions.transforms.Transform 的用法。

用法:

class torch.distributions.transforms.Transform(cache_size=0)

參數

cache_size(int) -緩存大小。如果為零,則不進行緩存。如果為 1,則緩存最新的單個值。僅支持 0 和 1。

變量

  • ~Transform.domain(Constraint) -表示此轉換的有效輸入的約束。

  • ~Transform.codomain(Constraint) -表示此變換的有效輸出的約束,這些輸出是逆變換的輸入。

  • ~Transform.bijective(bool) -這種變換是否是雙射的。對於域中的每個 x 和共域中的每個 y,變換 t 是雙射的,如果 t.inv(t(x)) == xt(t.inv(y)) == y 。非雙射變換至少應保持較弱的偽逆屬性 t(t.inv(t(x)) == t(x)t.inv(t(t.inv(y))) == t.inv(y)

  • ~Transform.sign(int或者Tensor) -對於雙射單變量變換,這應該是 +1 或 -1,具體取決於變換是單調遞增還是遞減。

具有可計算 log det jacobians 的可逆變換的抽象類。它們主要用於 torch.distributions.TransformedDistribution

緩存對於逆變換成本高或數值不穩定的變換很有用。請注意,必須注意 memory 值,因為 autograd 圖可能會反轉。例如,雖然以下內容在有或沒有緩存的情況下都有效:

y = t(x)
t.log_abs_det_jacobian(x, y).backward()  # x will receive gradients.

但是,由於依賴反轉,緩存時會出現以下錯誤:

y = t(x)
z = t.inv(y)
grad(z.sum(), [y])  # error because z is x

派生類應實現 _call()_inverse() 之一或兩者。設置 bijective=True 的派生類也應該實現 log_abs_det_jacobian()

相關用法


注:本文由純淨天空篩選整理自pytorch.org大神的英文原創作品 torch.distributions.transforms.Transform。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。