Quasi-newton methods¶
This subpackage contains conjugate gradient methods.
See also¶
- Line search - conjugate gradient methods usually require a line search.
Classes:
-
ConjugateDescent
–Conjugate Descent (CD).
-
DYHS
–Dai-Yuan - Hestenes–Stiefel hybrid conjugate gradient method.
-
DaiYuan
–Dai–Yuan nonlinear conjugate gradient method.
-
FletcherReeves
–Fletcher–Reeves nonlinear conjugate gradient method.
-
HagerZhang
–Hager-Zhang nonlinear conjugate gradient method,
-
HestenesStiefel
–Hestenes–Stiefel nonlinear conjugate gradient method.
-
LiuStorey
–Liu-Storey nonlinear conjugate gradient method.
-
PolakRibiere
–Polak-Ribière-Polyak nonlinear conjugate gradient method.
-
ProjectedGradientMethod
–Projected gradient method. Directly projects the gradient onto subspace conjugate to past directions.
ConjugateDescent ¶
Bases: torchzero.modules.conjugate_gradient.cg.ConguateGradientBase
Conjugate Descent (CD).
Note
This requires step size to be determined via a line search, so put a line search like tz.m.StrongWolfe(c2=0.1, a_init="first-order")
after this.
Source code in torchzero/modules/conjugate_gradient/cg.py
DYHS ¶
Bases: torchzero.modules.conjugate_gradient.cg.ConguateGradientBase
Dai-Yuan - Hestenes–Stiefel hybrid conjugate gradient method.
Note
This requires step size to be determined via a line search, so put a line search like tz.m.StrongWolfe(c2=0.1, a_init="first-order")
after this.
Source code in torchzero/modules/conjugate_gradient/cg.py
DaiYuan ¶
Bases: torchzero.modules.conjugate_gradient.cg.ConguateGradientBase
Dai–Yuan nonlinear conjugate gradient method.
Note
This requires step size to be determined via a line search, so put a line search like tz.m.StrongWolfe(c2=0.1)
after this.
Source code in torchzero/modules/conjugate_gradient/cg.py
FletcherReeves ¶
Bases: torchzero.modules.conjugate_gradient.cg.ConguateGradientBase
Fletcher–Reeves nonlinear conjugate gradient method.
Note
This requires step size to be determined via a line search, so put a line search like tz.m.StrongWolfe(c2=0.1, a_init="first-order")
after this.
Source code in torchzero/modules/conjugate_gradient/cg.py
HagerZhang ¶
Bases: torchzero.modules.conjugate_gradient.cg.ConguateGradientBase
Hager-Zhang nonlinear conjugate gradient method,
Note
This requires step size to be determined via a line search, so put a line search like tz.m.StrongWolfe(c2=0.1, a_init="first-order")
after this.
Source code in torchzero/modules/conjugate_gradient/cg.py
HestenesStiefel ¶
Bases: torchzero.modules.conjugate_gradient.cg.ConguateGradientBase
Hestenes–Stiefel nonlinear conjugate gradient method.
Note
This requires step size to be determined via a line search, so put a line search like tz.m.StrongWolfe(c2=0.1, a_init="first-order")
after this.
Source code in torchzero/modules/conjugate_gradient/cg.py
LiuStorey ¶
Bases: torchzero.modules.conjugate_gradient.cg.ConguateGradientBase
Liu-Storey nonlinear conjugate gradient method.
Note
This requires step size to be determined via a line search, so put a line search like tz.m.StrongWolfe(c2=0.1, a_init="first-order")
after this.
Source code in torchzero/modules/conjugate_gradient/cg.py
PolakRibiere ¶
Bases: torchzero.modules.conjugate_gradient.cg.ConguateGradientBase
Polak-Ribière-Polyak nonlinear conjugate gradient method.
Note
This requires step size to be determined via a line search, so put a line search like tz.m.StrongWolfe(c2=0.1, a_init="first-order")
after this.
Source code in torchzero/modules/conjugate_gradient/cg.py
ProjectedGradientMethod ¶
Bases: torchzero.modules.quasi_newton.quasi_newton.HessianUpdateStrategy
Projected gradient method. Directly projects the gradient onto subspace conjugate to past directions.
Notes
- This method uses N^2 memory.
- This requires step size to be determined via a line search, so put a line search like
tz.m.StrongWolfe(c2=0.1, a_init="first-order")
after this. - This is not the same as projected gradient descent.
Reference
Pearson, J. D. (1969). Variable metric methods of minimisation. The Computer Journal, 12(2), 171–178. doi:10.1093/comjnl/12.2.171. (algorithm 5 in section 6)