Shortcuts

torch.optim.adadelta 的源代码

```html
import torch
from torch import Tensor

from .optimizer import (Optimizer, _use_grad_for_differentiable, _default_to_fused_or_foreach,
                        _differentiable_doc, _foreach_doc, _maximize_doc, _view_as_real)
from typing import List, Optional

__all__ = ["Adadelta", "adadelta"]


[docs]class Adadelta(Optimizer): def __init__( self, params, lr=1.0, rho=0.9, eps=1e-6, weight_decay=0, foreach: Optional[bool] = None, *, maximize: bool = False, differentiable: bool = False, ): if not 0.0 <= lr: raise ValueError(f"Invalid learning rate: {lr}") if not 0.0 <= rho <= 1.0: raise ValueError(f"Invalid rho value: {rho}") if not 0.0 <= eps: raise ValueError(f"Invalid epsilon value: {eps}") if not 0.0 <= weight_decay: raise ValueError(f"Invalid weight_decay value: {weight_decay}") defaults = dict( lr=lr, rho=rho, eps=eps, weight_decay=weight_decay, maximize=maximize, foreach=foreach, differentiable=differentiable, ) super().__init__(params, defaults) def __setstate__(self, state): super().__setstate__(state) for group in self.param_groups: group.setdefault("foreach", None) group.setdefault("maximize", False) group.setdefault("differentiable", False) def _init_group(self, group, params_with_grad, grads, square_avgs, acc_deltas): has_complex = False for p in group["params"]: if p.grad is None: continue has_complex |= torch.is_complex(p) params_with_grad.append(p) if p.grad.is_sparse: raise RuntimeError("Adadelta does not support sparse gradients") grads.append(p.grad) state = self.state[p] # 延迟状态初始化 if len(state) == 0: state["step"] = 0 state["square_avg"] = torch.zeros_like( p, memory_format=torch.preserve_format ) state["acc_delta"] = torch.zeros_like( p, memory_format=torch.preserve_format ) square_avgs.append(state["square_avg"]) acc_deltas.append(state["acc_delta"]) state["step"] += 1 return has_complex
[docs] @_use_grad_for_differentiable def step(self, closure=None): """执行单个优化步骤。 参数: closure (Callable, 可选): 一个重新评估模型并返回损失的闭包。 """ loss = None if closure is not None<span
优云智算