Skip to content

ExponentialDecayScheduler

Methods and Attributes

Bases: BaseScheduler

Scheduler with exponential decay: value = initial * (decay_rate ** step_count).

Source code in torchebm/core/base_scheduler.py
class ExponentialDecayScheduler(BaseScheduler):
    """Scheduler with exponential decay: value = initial * (decay_rate ** step_count)."""

    def __init__(
        self,
        initial_value: float,
        decay_rate: float,
        min_value: float = 0.0,  # Default min_value to 0
    ):
        super().__init__(initial_value)
        if not 0.0 < decay_rate <= 1.0:
            raise ValueError("decay_rate must be in (0, 1]")
        if min_value < 0:
            raise ValueError("min_value must be non-negative")
        self.decay_rate: float = decay_rate
        self.min_value: float = min_value

    def _compute_value(self) -> float:
        """Compute value with exponential decay."""
        # Use self.step_count which was incremented in step()
        val = self.initial_value * (self.decay_rate**self.step_count)
        return max(self.min_value, val)

decay_rate instance-attribute

decay_rate: float = decay_rate

min_value instance-attribute

min_value: float = min_value

_compute_value

_compute_value() -> float

Compute value with exponential decay.

Source code in torchebm/core/base_scheduler.py
def _compute_value(self) -> float:
    """Compute value with exponential decay."""
    # Use self.step_count which was incremented in step()
    val = self.initial_value * (self.decay_rate**self.step_count)
    return max(self.min_value, val)