MCPcopy Create free account
hub / github.com/ddbourgin/numpy-ml / RMSProp

Class RMSProp

numpy_ml/neural_nets/optimizers/optimizers.py:262–361  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

260
261
262class RMSProp(OptimizerBase):
263 def __init__(
264 self, lr=0.001, decay=0.9, eps=1e-7, clip_norm=None, lr_scheduler=None, **kwargs
265 ):
266 """
267 RMSProp optimizer.
268
269 Notes
270 -----
271 RMSProp was proposed as a refinement of :class:`AdaGrad` to reduce its
272 aggressive, monotonically decreasing learning rate.
273
274 RMSProp uses a *decaying average* of the previous squared gradients
275 (second moment) rather than just the immediately preceding squared
276 gradient for its `previous_update` value.
277
278 Equations::
279
280 cache[t] = decay * cache[t-1] + (1 - decay) * grad[t] ** 2
281 update[t] = lr * grad[t] / (np.sqrt(cache[t]) + eps)
282 param[t+1] = param[t] - update[t]
283
284 Note that the ``**`` and ``/`` operations are elementwise.
285
286 Parameters
287 ----------
288 lr : float
289 Learning rate for update. Default is 0.001.
290 decay : float in [0, 1]
291 Rate of decay for the moving average. Typical values are [0.9,
292 0.99, 0.999]. Default is 0.9.
293 eps : float
294 Constant term to avoid divide-by-zero errors during the update calc. Default is 1e-7.
295 clip_norm : float or None
296 If not None, all param gradients are scaled to have maximum l2 norm of
297 `clip_norm` before computing update. Default is None.
298 lr_scheduler : str or :doc:`Scheduler <numpy_ml.neural_nets.schedulers>` object or None
299 The learning rate scheduler. If None, use a constant learning
300 rate equal to `lr`. Default is None.
301 """
302 super().__init__(lr, lr_scheduler)
303
304 self.cache = {}
305 self.hyperparameters = {
306 "id": "RMSProp",
307 "lr": lr,
308 "eps": eps,
309 "decay": decay,
310 "clip_norm": clip_norm,
311 "lr_scheduler": str(self.lr_scheduler),
312 }
313
314 def __str__(self):
315 H = self.hyperparameters
316 sc = H["lr_scheduler"]
317 lr, eps, dc, cn = H["lr"], H["eps"], H["decay"], H["clip_norm"]
318 return "RMSProp(lr={}, eps={}, decay={}, clip_norm={}, lr_scheduler={})".format(
319 lr, eps, dc, cn, sc

Callers 2

init_from_strMethod · 0.85
init_from_dictMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected