LSST Applications g0603fd7c41+501e3db9f9,g0aad566f14+23d8574c86,g0dd44d6229+a1a4c8b791,g2079a07aa2+86d27d4dc4,g2305ad1205+a62672bbc1,g2bbee38e9b+047b288a59,g337abbeb29+047b288a59,g33d1c0ed96+047b288a59,g3a166c0a6a+047b288a59,g3d1719c13e+23d8574c86,g487adcacf7+cb7fd919b2,g4be5004598+23d8574c86,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+4a9e435310,g63cd9335cc+585e252eca,g858d7b2824+23d8574c86,g88963caddf+0cb8e002cc,g99cad8db69+43388bcaec,g9ddcbc5298+9a081db1e4,ga1e77700b3+a912195c07,gae0086650b+585e252eca,gb0e22166c9+60f28cb32d,gb2522980b2+793639e996,gb3a676b8dc+b4feba26a1,gb4b16eec92+63f8520565,gba4ed39666+c2a2e4ac27,gbb8dafda3b+a5d255a82e,gc120e1dc64+d820f8acdb,gc28159a63d+047b288a59,gc3e9b769f7+f4f1cc6b50,gcf0d15dbbd+a1a4c8b791,gdaeeff99f8+f9a426f77a,gdb0af172c8+b6d5496702,ge79ae78c31+047b288a59,w.2024.19
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | List of all members
lsst.scarlet.lite.parameters.AdaproxParameter Class Reference
Inheritance diagram for lsst.scarlet.lite.parameters.AdaproxParameter:
lsst.scarlet.lite.parameters.Parameter

Public Member Functions

 __init__ (self, np.ndarray x, Callable|float step, Callable|None grad=None, Callable|None prox=None, float b1=0.9, float b2=0.999, float eps=1e-8, float p=0.25, np.ndarray|None m0=None, np.ndarray|None v0=None, np.ndarray|None vhat0=None, str scheme="amsgrad", float prox_e_rel=1e-6)
 
 update (self, int it, np.ndarray input_grad, *args)
 

Public Attributes

 b1
 
 b2
 
 eps
 
 p
 
 phi_psi
 
 e_rel
 
 x
 

Detailed Description

Operator updated using te Proximal ADAM algorithm

Uses multiple variants of adaptive quasi-Newton gradient descent
    * Adam (Kingma & Ba 2015)
    * NAdam (Dozat 2016)
    * AMSGrad (Reddi, Kale & Kumar 2018)
    * PAdam (Chen & Gu 2018)
    * AdamX (Phuong & Phong 2019)
    * RAdam (Liu et al. 2019)
See details of the algorithms in the respective papers.

Definition at line 356 of file parameters.py.

Constructor & Destructor Documentation

◆ __init__()

lsst.scarlet.lite.parameters.AdaproxParameter.__init__ ( self,
np.ndarray x,
Callable | float step,
Callable | None grad = None,
Callable | None prox = None,
float b1 = 0.9,
float b2 = 0.999,
float eps = 1e-8,
float p = 0.25,
np.ndarray | None m0 = None,
np.ndarray | None v0 = None,
np.ndarray | None vhat0 = None,
str scheme = "amsgrad",
float prox_e_rel = 1e-6 )

Reimplemented from lsst.scarlet.lite.parameters.Parameter.

Definition at line 369 of file parameters.py.

384 ):
385 shape = x.shape
386 dtype = x.dtype
387 if m0 is None:
388 m0 = np.zeros(shape, dtype=dtype)
389
390 if v0 is None:
391 v0 = np.zeros(shape, dtype=dtype)
392
393 if vhat0 is None:
394 vhat0 = np.ones(shape, dtype=dtype) * -np.inf
395
396 super().__init__(
397 x,
398 {
399 "m": m0,
400 "v": v0,
401 "vhat": vhat0,
402 },
403 step,
404 grad,
405 prox,
406 )
407
408 if isinstance(b1, float):
409 _b1 = SingleItemArray(b1)
410 else:
411 _b1 = b1
412
413 self.b1 = _b1
414 self.b2 = b2
415 self.eps = eps
416 self.p = p
417
418 self.phi_psi = phi_psi[scheme]
419 self.e_rel = prox_e_rel
420

Member Function Documentation

◆ update()

lsst.scarlet.lite.parameters.AdaproxParameter.update ( self,
int it,
np.ndarray input_grad,
* args )
Update the parameter and meta-parameters using the PGM

See `~Parameter` for more.

Reimplemented from lsst.scarlet.lite.parameters.Parameter.

Definition at line 421 of file parameters.py.

421 def update(self, it: int, input_grad: np.ndarray, *args):
422 """Update the parameter and meta-parameters using the PGM
423
424 See `~Parameter` for more.
425 """
426 _x = self.x
427 # Calculate the gradient
428 grad = cast(Callable, self.grad)(input_grad, _x, *args)
429 # Get the update for the parameter
430 phi, psi = self.phi_psi(
431 it,
432 grad,
433 self.helpers["m"],
434 self.helpers["v"],
435 self.helpers["vhat"],
436 self.b1,
437 self.b2,
438 self.eps,
439 self.p,
440 )
441 # Calculate the step size
442 step = self.step
443 if it > 0:
444 _x += -step * phi / psi
445 else:
446 # This is a scheme that Peter Melchior and I came up with to
447 # dampen the known affect of ADAM, where the first iteration
448 # is often much larger than desired.
449 _x += -step * phi / psi / 10
450
451 self.x = cast(Callable, self.prox)(_x)
452
453

Member Data Documentation

◆ b1

lsst.scarlet.lite.parameters.AdaproxParameter.b1

Definition at line 413 of file parameters.py.

◆ b2

lsst.scarlet.lite.parameters.AdaproxParameter.b2

Definition at line 414 of file parameters.py.

◆ e_rel

lsst.scarlet.lite.parameters.AdaproxParameter.e_rel

Definition at line 419 of file parameters.py.

◆ eps

lsst.scarlet.lite.parameters.AdaproxParameter.eps

Definition at line 415 of file parameters.py.

◆ p

lsst.scarlet.lite.parameters.AdaproxParameter.p

Definition at line 416 of file parameters.py.

◆ phi_psi

lsst.scarlet.lite.parameters.AdaproxParameter.phi_psi

Definition at line 418 of file parameters.py.

◆ x

lsst.scarlet.lite.parameters.AdaproxParameter.x

Definition at line 451 of file parameters.py.


The documentation for this class was generated from the following file: