SGD with linesearch

class optim.sgd_modified.SGD_MOD(params, lr=1, momentum=0, dampening=0, weight_decay=0, nesterov=False, line_search_fn=None, line_search_eps=0.0001)[source]

Extends the original steepest gradient descent of PyTorch [torch.optim.SGD] with optional backtracking linesearch. The linesearch implementation is adapted from scipy [scipy.optimize.linesearch] and relies only on the value of the loss function, not derivatives.

Warning

This optimizer doesn’t support per-parameter options and parameter groups (there can be only one).

Parameters
  • params (iterable) – iterable of parameters to optimize or dicts defining parameter groups

  • lr (float) – learning rate (default: 1)

  • momentum (float, optional) – momentum factor (default: 0)

  • dampening (float, optional) – dampening for momentum (default: 0)

  • weight_decay (float, optional) – weight decay (L2 penalty) (default: 0)

  • nesterov (bool, optional) – enables Nesterov momentum (default: False)

  • line_search_fn (str, optional) – line search algorithm. Supported options "backtracking" (default: None)

  • line_search_eps (float, optional) – minimal step size (default: 1.0e-4)

step_2c(closure, closure_linesearch=None)[source]

Performs a single optimization step.

Parameters
  • closure (callable) – A closure that reevaluates the model and returns the loss.

  • closure_linesearch (callable, optional) – A closure that reevaluates the model and returns the loss in torch.no_grad context