Documented scheduler module
This commit is contained in:
parent
ea62ccf389
commit
720bb1b051
3 changed files with 50 additions and 1 deletions
|
@ -1,4 +1,6 @@
|
||||||
Hyperparameter Scheduling
|
Hyperparameter Scheduling
|
||||||
=========================
|
=========================
|
||||||
.. automodule:: rltorch.scheduler
|
.. autoclass:: rltorch.scheduler.LinearScheduler
|
||||||
|
:members:
|
||||||
|
.. autoclass:: rltorch.scheduler.ExponentialScheduler
|
||||||
:members:
|
:members:
|
||||||
|
|
|
@ -1,5 +1,30 @@
|
||||||
from .Scheduler import Scheduler
|
from .Scheduler import Scheduler
|
||||||
class ExponentialScheduler(Scheduler):
|
class ExponentialScheduler(Scheduler):
|
||||||
|
r"""
|
||||||
|
A exponential scheduler that given a certain number
|
||||||
|
of iterations, spaces the values between
|
||||||
|
a start and an end point in an exponential order.
|
||||||
|
|
||||||
|
Notes
|
||||||
|
-----
|
||||||
|
The forumula used to produce the value :math:`y` is based on the number of
|
||||||
|
times you call `next`. (denoted as :math:`i`)
|
||||||
|
|
||||||
|
:math:`y(1) = initial\_value`
|
||||||
|
:math:`y(i) = y(1) \cdot base^{i - 1}`
|
||||||
|
:math:`base = \sqrt[iterations]{\frac{end\_value}{initial\_value}}`.
|
||||||
|
|
||||||
|
Another property is that :math:`y(iterations) = end\_value`.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
initial_value : number
|
||||||
|
The first value returned in the schedule.
|
||||||
|
end_value: number
|
||||||
|
The value returned when the maximum number of iterations are reached
|
||||||
|
iterations: int
|
||||||
|
The total number of iterations
|
||||||
|
"""
|
||||||
def __init__(self, initial_value, end_value, iterations):
|
def __init__(self, initial_value, end_value, iterations):
|
||||||
super(ExponentialScheduler, self).__init__(initial_value, end_value, iterations)
|
super(ExponentialScheduler, self).__init__(initial_value, end_value, iterations)
|
||||||
self.base = (end_value / initial_value) ** (1.0 / iterations)
|
self.base = (end_value / initial_value) ** (1.0 / iterations)
|
||||||
|
|
|
@ -1,5 +1,27 @@
|
||||||
from .Scheduler import Scheduler
|
from .Scheduler import Scheduler
|
||||||
class LinearScheduler(Scheduler):
|
class LinearScheduler(Scheduler):
|
||||||
|
r"""
|
||||||
|
A linear scheduler that given a certain number
|
||||||
|
of iterations, equally spaces the values between
|
||||||
|
a start and an end point.
|
||||||
|
|
||||||
|
Notes
|
||||||
|
-----
|
||||||
|
The forumula used to produce the value :math:`y` is based on the number of
|
||||||
|
times you call `next`. (denoted as :math:`i`)
|
||||||
|
|
||||||
|
:math:`y(i) = slope \cdot (i - 1) + initial\_value`
|
||||||
|
where :math:`slope = \frac{end\_value - initial\_value)}{iterations}`.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
initial_value : number
|
||||||
|
The first value returned in the schedule.
|
||||||
|
end_value: number
|
||||||
|
The value returned when the maximum number of iterations are reached
|
||||||
|
iterations: int
|
||||||
|
The total number of iterations
|
||||||
|
"""
|
||||||
def __init__(self, initial_value, end_value, iterations):
|
def __init__(self, initial_value, end_value, iterations):
|
||||||
super(LinearScheduler, self).__init__(initial_value, end_value, iterations)
|
super(LinearScheduler, self).__init__(initial_value, end_value, iterations)
|
||||||
self.slope = (end_value - initial_value) / iterations
|
self.slope = (end_value - initial_value) / iterations
|
||||||
|
|
Loading…
Reference in a new issue