Acceleration

The pyunlocbox.acceleration module implements acceleration schemes for use with the pyunlocbox.solvers. Pass a given acceleration object as an argument to your chosen solver during its initialization so that the solver can use it.

Interface

The accel base class defines a common interface to all acceleration schemes:

accel.pre(self, functions, x0)

Pre-processing specific to the acceleration scheme.

accel.update_step(self, solver, objective, niter)

Update the step size for the next iteration.

accel.update_sol(self, solver, objective, niter)

Update the solution point for the next iteration.

accel.post(self)

Post-processing specific to the acceleration scheme.

Acceleration schemes

Then, derived classes implement various common acceleration schemes.

dummy()

Dummy acceleration scheme which does nothing.

backtracking([eta])

Backtracking based on a local quadratic approximation of the smooth part of the objective.

fista(**kwargs)

Acceleration scheme for forward-backward solvers.

fista_backtracking([eta])

Acceleration scheme with backtracking for forward-backward solvers.

regularized_nonlinear([k, lambda_, …])

Regularized nonlinear acceleration (RNA) for gradient descent.