timm 文件

最佳化

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

最佳化

本頁包含 timm 中學習率最佳化器的 API 參考文件。

最佳化器

工廠函式

timm.optim.create_optimizer_v2

< >

( model_or_params: typing.Union[torch.nn.modules.module.Module, collections.abc.Iterable[torch.Tensor], collections.abc.Iterable[dict[str, typing.Any]], collections.abc.Iterable[tuple[str, torch.Tensor]]] opt: str = 'sgd' lr: typing.Optional[float] = None weight_decay: float = 0.0 momentum: float = 0.9 foreach: typing.Optional[bool] = None filter_bias_and_bn: bool = True layer_decay: typing.Optional[float] = None layer_decay_min_scale: float = 0.0 layer_decay_no_opt_scale: typing.Optional[float] = None param_group_fn: typing.Optional[typing.Callable[[torch.nn.modules.module.Module], typing.Union[collections.abc.Iterable[torch.Tensor], collections.abc.Iterable[dict[str, typing.Any]], collections.abc.Iterable[tuple[str, torch.Tensor]]]]] = None **kwargs: typing.Any )

引數

  • model_or_params — 一個 PyTorch 模型或一個可迭代的引數/引數組。如果提供了一個模型,將根據其他引數自動提取和分組引數。
  • opt — 要建立的最佳化器的名稱(例如,‘adam’、‘adamw’、‘sgd’)。使用 list_optimizers() 檢視可用選項。
  • lr — 學習率。如果為 None,將使用最佳化器的預設值。
  • weight_decay — 權重衰減因子。如果 model_or_params 是一個模型,將用於建立引數組。
  • momentum — 支援動量的最佳化器的動量因子。僅當所選最佳化器接受 momentum 引數時使用。
  • foreach — 啟用/停用 foreach (多張量) 實現(如果可用)。如果為 None,將使用最佳化器特定的預設值。
  • filter_bias_and_bn — 如果為 True,則偏置、歸一化層引數(所有一維引數)將不應用權重衰減。僅當 model_or_params 是一個模型且 weight_decay > 0 時使用。
  • layer_decay — 可選的逐層學習率衰減因子。如果提供,學習率將按 layer_decay^(max_depth - layer_depth) 縮放。僅當 model_or_params 是一個模型時使用。
  • param_group_fn — 用於建立自定義引數組的可選函式。如果提供,其他引數分組選項將被忽略。
  • **kwargs — 額外的最佳化器特定引數(例如,Adam 的 betas)。

透過 timm 登錄檔建立最佳化器例項。

建立並配置一個具有適當引數組和設定的最佳化器。支援為權重衰減和逐層學習率自動建立引數組,以及自定義引數分組。

示例

模型的基本用法

optimizer = create_optimizer_v2(model, ‘adamw’, lr=1e-3)

帶動態和權重衰減的 SGD

optimizer = create_optimizer_v2( … model, ‘sgd’, lr=0.1, momentum=0.9, weight_decay=1e-4 … )

帶逐層學習率衰減的 Adam

optimizer = create_optimizer_v2( … model, ‘adam’, lr=1e-3, layer_decay=0.7 … )

自定義引數組

def group_fn(model): … return [ … {‘params’: model.backbone.parameters(), ‘lr’: 1e-4}, … {‘params’: model.head.parameters(), ‘lr’: 1e-3} … ] optimizer = create_optimizer_v2( … model, ‘sgd’, param_group_fn=group_fn … )

注意:引數組處理優先順序

  1. 如果提供了 param_group_fn,將只使用它
  2. 如果提供了 layer_decay,將建立逐層分組
  3. 如果 weight_decay > 0 且 filter_bias_and_bn 為 True,將建立權重衰減分組
  4. 否則,所有引數將分在同一組

timm.optim.list_optimizers

< >

( filter: typing.Union[str, typing.List[str]] = '' exclude_filters: typing.Optional[typing.List[str]] = None with_description: bool = False ) 如果 with_description 為 False

引數

  • filter — 萬用字元樣式的過濾字串或過濾字串列表(例如,‘adam’ 表示所有 Adam 變體,或 [‘adam’, ‘*8bit’] 表示 Adam 變體和 8 位最佳化器)。空字串表示不進行過濾。
  • exclude_filters — 可選的用於排除的萬用字元模式列表。例如,[’8bit’, ‘fused’] 將排除 8 位和融合實現。
  • with_description — 如果為 True,則返回 (名稱, 描述) 的元組,而不僅僅是名稱。描述提供了最佳化器特性的簡要說明。

返回

如果 with_description 為 False

字串形式的最佳化器名稱列表(例如,[‘adam’, ‘adamw’, …]) 如果 with_description 為 True:(名稱, 描述) 的元組列表(例如,[(‘adam’, ‘Adaptive Moment…’), …])

列出可用的最佳化器名稱,可選擇性地過濾。

列出所有已註冊的最佳化器,並可選擇使用萬用字元模式進行過濾。可以使用包含和排除模式過濾最佳化器,並可選擇為每個最佳化器名稱返回描述。

示例

list_optimizers() [‘adam’, ‘adamw’, ‘sgd’, …]

list_optimizers([‘la’, ‘nla’]) # 列出 lamb 和 lars [‘lamb’, ‘lambc’, ‘larc’, ‘lars’, ‘nlarc’, ‘nlars’]

list_optimizers(’adam’, exclude_filters=[‘bnb’, ‘fused’]) # 排除 bnb 和 apex adam 最佳化器 [‘adam’, ‘adamax’, ‘adamp’, ‘adamw’, ‘nadam’, ‘nadamw’, ‘radam’]

list_optimizers(with_description=True) # 獲取描述 [(‘adabelief’, ‘根據梯度預測誤差調整學習率’), (‘adadelta’, ‘torch.optim Adadelta, 根據梯度的執行視窗調整學習率’), (‘adafactor’, ‘使用分解梯度的記憶體高效 Adam 實現’), …]

timm.optim.get_optimizer_class

< >

( name: str bind_defaults: bool = True ) 如果 bind_defaults 為 False

引數

  • name — 要檢索的最佳化器的名稱(例如,‘adam’, ‘sgd’)
  • bind_defaults — 如果為 True,返回一個綁定了 OptimInfo 中預設引數的偏函式。如果為 False,返回原始的最佳化器類。

返回

如果 bind_defaults 為 False

最佳化器類(例如,torch.optim.Adam)如果 bind_defaults 為 True:一個綁定了預設引數的偏函式

引發

ValueError

  • ValueError — 如果在登錄檔中未找到最佳化器名稱

透過名稱獲取最佳化器類,並可選擇繫結預設引數。

檢索最佳化器類或一個綁定了預設引數的偏函式。這允許直接使用其預設配置例項化最佳化器,而無需透過完整的工廠函式。

示例

獲取帶 nesterov 動量預設值的 SGD

SGD = get_optimizer_class(‘sgd’) # 繫結 nesterov=True opt = SGD(model.parameters(), lr=0.1, momentum=0.9)

獲取原始最佳化器類

SGD = get_optimizer_class(‘sgd’) opt = SGD(model.parameters(), lr=1e-3, momentum=0.9)

最佳化器類

class timm.optim.AdaBelief

< >

( params lr = 0.001 betas = (0.9, 0.999) eps = 1e-16 weight_decay = 0 amsgrad = False decoupled_decay = True fixed_decay = False rectify = True degenerated_to_sgd = True )

引數

  • params (iterable) — 可最佳化的引數的可迭代物件或定義引數組的字典
  • lr (float, optional) — 學習率 (預設: 1e-3)
  • betas (Tuple[float, float], optional) — 用於計算梯度及其平方的執行平均值的係數 (預設: (0.9, 0.999))
  • eps (float, optional) — 新增到分母以提高數值穩定性的項 (預設: 1e-16)
  • weight_decay (float, optional) — 權重衰減 (L2 懲罰) (預設: 0)
  • amsgrad (boolean, optional) — 是否使用論文 On the Convergence of Adam and Beyond 中該演算法的 AMSGrad 變體 (預設: False)
  • decoupled_decay (boolean, optional) — (預設: True) 如果設定為 True,則最佳化器將使用類似 AdamW 的解耦權重衰減
  • fixed_decay (boolean, optional) — (預設: False) 當 weight_decouple 設定為 True 時使用。當 fixed_decay == True 時,權重衰減執行為 $W_{new} = W_{old} - W_{old} \times decay$。當 fixed_decay == False 時,權重衰減執行為 $W_{new} = W_{old} - W_{old} \times decay \times lr$。請注意,在這種情況下,權重衰減率會隨著學習率 (lr) 的降低而降低。
  • rectify (boolean, optional) — (預設: True) 如果設定為 True,則執行類似 RAdam 的修正更新
  • degenerated_to_sgd (boolean, optional) (預設—True) 如果設定為 True,則在梯度方差較大時執行 SGD 更新

實現 AdaBelief 演算法。修改自 PyTorch 中的 Adam

參考:AdaBelief Optimizer, adapting stepsizes by the belief in observed gradients, NeurIPS 2020

有關推薦超引數的完整表格,請參見 https://github.com/juntang-zhuang/Adabelief-Optimizer’ 例如,有關 EfficientNet 的 train/args,請參見這些 gists

步驟

< >

( closure = None )

引數

  • closure (callable, optional) — 一個重新評估模型並返回損失的閉包。

執行單次最佳化步驟。

class timm.optim.Adafactor

< >

( params: typing.Union[collections.abc.Iterable[torch.Tensor], collections.abc.Iterable[dict[str, typing.Any]], collections.abc.Iterable[tuple[str, torch.Tensor]]] lr: typing.Optional[float] = None eps: float = 1e-30 eps_scale: float = 0.001 clip_threshold: float = 1.0 decay_rate: float = -0.8 betas: typing.Optional[typing.Tuple[float, float]] = None weight_decay: float = 0.0 scale_parameter: bool = True warmup_init: bool = False min_dim_size_to_factor: int = 16 caution: bool = False )

實現 Adafactor 演算法。

此實現基於:Adafactor: Adaptive Learning Rates with Sublinear Memory Cost (參見 https://arxiv.org/abs/1804.04235)

請注意,該最佳化器會根據 scale_parameterrelative_stepwarmup_init 選項內部調整學習率。

要使用手動(外部)學習率排程,您應設定 scale_parameter=Falserelative_step=False

引數: params: 用於最佳化的引數可迭代物件或定義引數組的字典 lr: 外部學習率 eps: 分別用於平方梯度和引數尺度的正則化常數 eps_scale: 分別用於引數尺度的正則化常數 clip_threshold: 最終梯度更新的均方根閾值 decay_rate: 用於計算平方梯度執行平均值的係數 beta1: 用於計算梯度執行平均值的係數 weight_decay: 權重衰減 scale_parameter: 如果為 True,學習率將按引數的均方根進行縮放 warmup_init: 依賴時間的學習率計算取決於是否使用預熱初始化

步驟

< >

( closure = None )

引數

  • closure (callable, optional) — 一個重新評估模型並返回損失的閉包。

執行單次最佳化步驟。

class timm.optim.AdafactorBigVision

< >

( params: typing.Union[collections.abc.Iterable[torch.Tensor], collections.abc.Iterable[dict[str, typing.Any]], collections.abc.Iterable[tuple[str, torch.Tensor]]] lr: float = 1.0 min_dim_size_to_factor: int = 16 decay_rate: float = 0.8 decay_offset: int = 0 beta2_cap: float = 0.999 momentum: typing.Optional[float] = 0.9 momentum_dtype: typing.Union[str, torch.dtype] = torch.bfloat16 eps: typing.Optional[float] = None weight_decay: float = 0.0 clipping_threshold: typing.Optional[float] = None unscaled_wd: bool = False caution: bool = False corrected_weight_decay: bool = False foreach: typing.Optional[bool] = False )

BigVision 的 Adafactor 變體的 PyTorch 實現,具有單張量和多張量實現。

由 Ross Wightman 改編自 https://github.com/google-research/big_vision

class timm.optim.Adahessian

< >

( params lr = 0.1 betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0.0 hessian_power = 1.0 update_each = 1 n_samples = 1 avg_conv_kernel = False )

引數

  • params (iterable) — 可最佳化的引數的可迭代物件或定義引數組的字典
  • lr (float, optional) — 學習率 (預設: 0.1)
  • betas ((float, float), optional) — 用於計算梯度和海森矩陣跡的平方的執行平均值的係數 (預設: (0.9, 0.999))
  • eps (float, optional) — 新增到分母以提高數值穩定性的項 (預設: 1e-8)
  • weight_decay (float, optional) — 權重衰減 (L2 懲罰) (預設: 0.0)
  • hessian_power (float, optional) — 海森矩陣跡的指數 (預設: 1.0)
  • update_each (int, 可選) — 僅在執行*此*步數後計算海森矩陣跡的近似值(以節省時間)(預設值:1)
  • n_samples (int, 可選) — 為近似海森矩陣跡而對 z 進行取樣的次數(預設值:1)

實現了論文《ADAHESSIAN: An Adaptive Second OrderOptimizer for Machine Learning》中的 AdaHessian 演算法。

get_params

< >

( )

獲取所有引數組中帶有梯度的所有引數。

set_hessian

< >

( )

計算海森矩陣跡的 Hutchinson 近似值,併為每個可訓練引數累加該值。

步驟

< >

( closure = None )

引數

  • closure (callable, 可選) — 一個重新評估模型並返回損失的閉包(預設值:None)

執行單次最佳化步驟。

zero_hessian

< >

( )

將累加的海森矩陣跡清零。

class timm.optim.AdamP

< >

( params lr = 0.001 betas = (0.9, 0.999) eps = 1e-08 weight_decay = 0 delta = 0.1 wd_ratio = 0.1 nesterov = False )

class timm.optim.Adan

< >

( params lr: float = 0.001 betas: typing.Tuple[float, float, float] = (0.98, 0.92, 0.99) eps: float = 1e-08 weight_decay: float = 0.0 no_prox: bool = False caution: bool = False foreach: typing.Optional[bool] = None )

引數

  • params — 要最佳化的可迭代引數或定義引數組的字典。
  • lr — 學習率。
  • betas — 用於一階和二階矩的係數。
  • eps — 新增到分母中以提高數值穩定性的項。
  • weight_decay — 解耦權重衰減(L2 懲罰)
  • no_prox — 如何執行權重衰減
  • caution — 啟用來自《Cautious Optimizers》的謹慎模式
  • foreach — 如果為 True,將使用 torch._foreach 實現。速度更快,但會多佔用一些記憶體。

實現了 Adan 的一個 PyTorch 變體。

Adan 演算法在論文《Adan: Adaptive Nesterov Momentum Algorithm for Faster Optimizing Deep Models》中被提出,網址:https://arxiv.org/abs/2208.06677

步驟

< >

( closure = None )

執行單次最佳化步驟。

class timm.optim.Adopt

< >

( params: typing.Union[collections.abc.Iterable[torch.Tensor], collections.abc.Iterable[dict[str, typing.Any]], collections.abc.Iterable[tuple[str, torch.Tensor]]] lr: typing.Union[float, torch.Tensor] = 0.001 betas: typing.Tuple[float, float] = (0.9, 0.9999) eps: float = 1e-06 clip_exp: typing.Optional[float] = 0.333 weight_decay: float = 0.0 decoupled: bool = False corrected_weight_decay: bool = False caution: bool = False foreach: typing.Optional[bool] = False maximize: bool = False capturable: bool = False differentiable: bool = False )

ADOPT: Modified Adam Can Converge with Any β2 with the Optimal Rate: https://arxiv.org/abs/2411.02853

步驟

< >

( closure = None )

引數

  • closure (Callable, 可選) — 一個重新評估模型並返回損失的閉包。

執行單步最佳化。

class timm.optim.Lamb

< >

( params: typing.Union[collections.abc.Iterable[torch.Tensor], collections.abc.Iterable[dict[str, typing.Any]], collections.abc.Iterable[tuple[str, torch.Tensor]]] lr: float = 0.001 bias_correction: bool = True betas: typing.Tuple[float, float] = (0.9, 0.999) eps: float = 1e-06 weight_decay: float = 0.01 grad_averaging: bool = True max_grad_norm: typing.Optional[float] = 1.0 trust_clip: bool = False always_adapt: bool = False caution: bool = False decoupled_decay: bool = False corrected_weight_decay: bool = False )

引數

  • params — 要最佳化的可迭代引數或定義引數組的字典。
  • lr — 學習率
  • betas — 用於計算梯度及其範數的移動平均值的係數。
  • eps — 新增到分母中以提高數值穩定性的項。
  • weight_decay — 權重衰減
  • grad_averaging — 在計算梯度的移動平均值時是否對梯度應用 (1-beta2)。
  • max_grad_norm — 用於裁剪全域性梯度範數的值。
  • trust_clip — 啟用 LAMBC 置信度裁剪。
  • always_adapt — 將自適應學習率應用於權重衰減為 0.0 的引數。
  • caution — 應用謹慎模式。
  • decoupled — 應用解耦權重衰減
  • corrected_weight_decay — 當使用 decoupled_decay 時,應用校正後的權重衰減 (lr**2 / max_lr)

實現了一個純 PyTorch 版本的 FuseLAMB(NvLamb 變體)最佳化器,源自 apex.optimizers.FusedLAMB。參考:https://github.com/NVIDIA/DeepLearningExamples/blob/master/PyTorch/LanguageModeling/Transformer-XL/pytorch/lamb.py

LAMB 演算法在以下論文中被提出:

步驟

< >

( closure = None )

引數

  • closure (callable, 可選) — 一個重新評估模型並返回損失的閉包。

執行單次最佳化步驟。

class timm.optim.LaProp

< >

( params: typing.Union[collections.abc.Iterable[torch.Tensor], collections.abc.Iterable[dict[str, typing.Any]], collections.abc.Iterable[tuple[str, torch.Tensor]]] lr: float = 0.0004 betas: typing.Tuple[float, float] = (0.9, 0.999) eps: float = 1e-15 weight_decay: float = 0.0 caution: bool = False corrected_weight_decay: bool = False )

LaProp 最佳化器

論文:LaProp: Separating Momentum and Adaptivity in Adam, https://arxiv.org/abs/2002.04839

步驟

< >

( closure = None )

引數

  • closure (callable, 可選) — 一個重新評估模型並返回損失的閉包。

執行單次最佳化步驟。

class timm.optim.Lars

< >

( params lr = 1.0 momentum = 0 dampening = 0 weight_decay = 0 nesterov = False trust_coeff = 0.001 eps = 1e-08 trust_clip = False always_adapt = False )

引數

  • params (iterable) — 要最佳化的可迭代引數或定義引數組的字典。
  • lr (float, 可選) — 學習率(預設值:1.0)。
  • momentum (float, 可選) — 動量因子(預設值:0)
  • weight_decay (float, 可選) — 權重衰減(L2 懲罰)(預設值:0)
  • dampening (float, 可選) — 動量阻尼(預設值:0)
  • nesterov (bool, 可選) — 啟用 Nesterov 動量(預設值:False)
  • trust_coeff (float) — 用於計算自適應學習率/置信度比率的置信係數(預設值:0.001)
  • eps (float) — 用於除法分母的 epsilon 值(預設值:1e-8)
  • trust_clip (bool) — 啟用 LARC 置信度比率裁剪(預設值:False)
  • always_adapt (bool) — 總是應用 LARS 學習率自適應,否則僅當組的 weight_decay != 0 時應用(預設值:False)

用於 PyTorch 的 LARS 最佳化器

論文:Large batch training of Convolutional Networks - https://arxiv.org/pdf/1708.03888.pdf

步驟

< >

( closure = None )

引數

  • closure (callable, 可選) — 一個重新評估模型並返回損失的閉包。

執行單次最佳化步驟。

class timm.optim.Lion

< >

( params: typing.Union[collections.abc.Iterable[torch.Tensor], collections.abc.Iterable[dict[str, typing.Any]], collections.abc.Iterable[tuple[str, torch.Tensor]]] lr: float = 0.0001 betas: typing.Tuple[float, float] = (0.9, 0.99) weight_decay: float = 0.0 caution: bool = False corrected_weight_decay: bool = False maximize: bool = False foreach: typing.Optional[bool] = None )

實現了 Lion 演算法。

步驟

< >

( closure = None )

引數

  • closure — 一個重新評估模型並返回損失的閉包。

執行單次最佳化步驟。

class timm.optim.Lookahead

< >

( base_optimizer alpha = 0.5 k = 6 )

class timm.optim.MADGRAD

< >

( params: typing.Any lr: float = 0.01 momentum: float = 0.9 weight_decay: float = 0 eps: float = 1e-06 decoupled_decay: bool = False )

引數

  • params (iterable) — 可迭代的待最佳化引數或定義引數組的字典。
  • lr (float) — 學習率(預設值:1e-2)。
  • momentum (float) — 動量值,範圍為 [0,1)(預設值:0.9)。
  • weight_decay (float) — 權重衰減,即 L2 懲罰項(預設值:0)。
  • eps (float) — 為提高數值穩定性而新增到分母根運算之外的項。(預設值:1e-6)。

MADGRAD_:一種用於隨機最佳化的動量化、自適應、雙重平均梯度方法。

.. _MADGRAD: https://arxiv.org/abs/2101.11075

MADGRAD 是一種通用最佳化器,可替代 SGD 或 Adam,可能會更快地收斂並具有更好的泛化能力。目前僅支援 GPU。通常,可使用與 SGD 或 Adam 相同的學習率排程。總體學習率與這兩種方法都不可比,應透過超引數搜尋確定。

MADGRAD 所需的權重衰減比其他方法少,通常甚至可以為零。用於 SGD 或 Adam 的 beta1 的動量值也適用於此。

對於稀疏問題,weight_decay 和 momentum 都應設定為 0。

步驟

< >

( closure: typing.Optional[typing.Callable[[], float]] = None )

引數

  • closure (callable, 可選) — 一個重新評估模型並返回損失的閉包。

執行單次最佳化步驟。

class timm.optim.Mars

< >

( params: typing.Union[collections.abc.Iterable[torch.Tensor], collections.abc.Iterable[dict[str, typing.Any]], collections.abc.Iterable[tuple[str, torch.Tensor]]] lr: float = 0.003 betas: typing.Tuple[float, float] = (0.9, 0.99) eps: float = 1e-08 weight_decay: float = 0.0 gamma: float = 0.025 mars_type: str = 'adamw' optimize_1d: bool = False lr_1d_factor: float = 1.0 betas_1d: typing.Optional[typing.Tuple[float, float]] = None caution: bool = False )

MARS 最佳化器

論文:MARS: Unleashing the Power of Variance Reduction for Training Large Models https://arxiv.org/abs/2411.10438

步驟

< >

( closure = None )

引數

  • closure (callable, 可選) — 一個重新評估模型並返回損失的閉包。

執行單次最佳化步驟。

class timm.optim.NAdamW

< >

( params: typing.Union[collections.abc.Iterable[torch.Tensor], collections.abc.Iterable[dict[str, typing.Any]], collections.abc.Iterable[tuple[str, torch.Tensor]]] lr: float = 0.001 betas: typing.Tuple[float, float] = (0.9, 0.999) eps: float = 1e-08 weight_decay: float = 0.01 caution: bool = False corrected_weight_decay: bool = False maximize: bool = False foreach: typing.Optional[bool] = None capturable: bool = False )

引數

  • params — 可迭代的待最佳化引數或定義引數組的字典
  • lr — 學習率
  • betas — 用於計算梯度及其平方的執行平均值的係數
  • eps — 為提高數值穩定性而新增到分母的項
  • weight_decay — 權重衰減係數
  • caution — 啟用 caution
  • corrected_weight_decay — 應用修正的權重衰減 (lr**2 / max_lr)

實現 NAdamW 演算法。

有關 NAdam 演算法的實現,請參閱 https://arxiv.org/abs/1910.05446 中的表 1(程式碼中也有註釋,強調了 NAdamW 和 AdamW 之間的唯一區別)。

有關該演算法的更多詳情,請參閱

步驟

< >

( closure = None )

引數

  • closure (callable, 可選) — 一個重新評估模型並返回損失的閉包。

執行單次最佳化步驟。

class timm.optim.NvNovoGrad

< >

( params lr = 0.001 betas = (0.95, 0.98) eps = 1e-08 weight_decay = 0 grad_averaging = False amsgrad = False )

引數

  • params (iterable) — 可迭代的待最佳化引數或定義引數組的字典
  • lr (float, 可選) — 學習率(預設值:1e-3)
  • betas (Tuple[float, float], 可選) — 用於計算梯度及其平方的執行平均值的係數(預設值:(0.95, 0.98))
  • eps (float, 可選) — 為提高數值穩定性而新增到分母的項(預設值:1e-8)
  • weight_decay (float, 可選) — 權重衰減(L2 懲罰項)(預設值:0)
  • grad_averaging — 梯度平均
  • amsgrad (boolean, 可選) — 是否使用論文 `On the Convergence of Adam and Beyond`_ 中的 AMSGrad 變體演算法(預設值:False)

實現 Novograd 演算法。

步驟

< >

( closure = None )

引數

  • closure (callable, 可選) — 一個重新評估模型的閉包
  • 返回損失。 —

執行單次最佳化步驟。

class timm.optim.RMSpropTF

< >

( params: typing.Union[collections.abc.Iterable[torch.Tensor], collections.abc.Iterable[dict[str, typing.Any]], collections.abc.Iterable[tuple[str, torch.Tensor]]] lr: float = 0.01 alpha: float = 0.9 eps: float = 1e-10 weight_decay: float = 0 momentum: float = 0.0 centered: bool = False decoupled_decay: bool = False corrected_weight_decay: bool = False lr_in_momentum: bool = True caution: bool = False )

引數

  • params — 可迭代的待最佳化引數或定義引數組的字典
  • lr — 學習率
  • momentum — 動量因子
  • alpha — 平滑(衰減)常數
  • eps — 為提高數值穩定性而新增到分母的項
  • centered — 如果為 `True`,則計算中心化的 RMSProp,梯度將透過其方差的估計值進行歸一化
  • weight_decay — 權重衰減(L2 懲罰項)(預設值:0)
  • decoupled_decay — 解耦權重衰減,根據 https://arxiv.org/abs/1711.05101
  • corrected_weight_decay — 當 decoupled_decay 為 True 時,應用修正的權重衰減 (lr**2 / max_lr)
  • lr_in_momentum — 根據 Tensorflow 中的預設設定,學習率縮放包含在動量緩衝更新中
  • caution — 應用 caution

實現 RMSprop 演算法(TensorFlow 風格的 epsilon)

注意:這是 PyTorch RMSprop 的直接複製貼上,在 sqrt 之前應用了 eps,並進行了一些其他修改,以更接近 Tensorflow,從而匹配超引數。

值得注意的變化包括

  1. 在平方根內應用 Epsilon
  2. square_avg 初始化為 1
  3. 在動量緩衝中累積更新的學習率縮放

由 G. Hinton 在他的課程中提出。

中心化版本首次出現在 Generating Sequences With Recurrent Neural Networks 中。

步驟

< >

( closure = None )

引數

  • closure (callable, 可選) — 一個重新評估模型並返回損失的閉包。

執行單次最佳化步驟。

class timm.optim.SGDP

< >

( params lr = <required parameter> momentum = 0 dampening = 0 weight_decay = 0 nesterov = False eps = 1e-08 delta = 0.1 wd_ratio = 0.1 )

class timm.optim.SGDW

< >

( params: typing.Union[collections.abc.Iterable[torch.Tensor], collections.abc.Iterable[dict[str, typing.Any]], collections.abc.Iterable[tuple[str, torch.Tensor]]] lr: float = 0.001 momentum: float = 0.0 dampening: float = 0.0 weight_decay: float = 0.0 nesterov: bool = False caution: bool = False corrected_weight_decay: bool = False maximize: bool = False foreach: typing.Optional[bool] = None differentiable: bool = False )

步驟

< >

( closure = None )

引數

  • closure (Callable, 可選) — 一個重新評估模型並返回損失的閉包。

執行單次最佳化步驟。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.