Skip to content

LinearScheduler

Methods and Attributes

Bases: BaseScheduler

Scheduler with linear annealing.

Source code in torchebm/core/base_scheduler.py
class LinearScheduler(BaseScheduler):
    """Scheduler with linear annealing."""

    def __init__(self, initial_value: float, final_value: float, total_steps: int):
        """
        Initialize scheduler with linear annealing.

        Args:
            initial_value: Starting parameter value
            final_value: Target parameter value
            total_steps: Number of steps to reach final value
        """
        super().__init__(initial_value)
        self.final_value = final_value
        self.total_steps = total_steps
        self.step_size = (final_value - initial_value) / total_steps

    def step(self) -> float:
        """Update value with linear change."""
        self.step_count += 1
        if self.step_count >= self.total_steps:
            self.current_value = self.final_value
        else:
            self.current_value = self.initial_value + self.step_size * self.step_count
        return self.current_value

final_value instance-attribute

final_value = final_value

total_steps instance-attribute

total_steps = total_steps

step_size instance-attribute

step_size = final_value - initial_value / total_steps

step

step() -> float

Update value with linear change.

Source code in torchebm/core/base_scheduler.py
def step(self) -> float:
    """Update value with linear change."""
    self.step_count += 1
    if self.step_count >= self.total_steps:
        self.current_value = self.final_value
    else:
        self.current_value = self.initial_value + self.step_size * self.step_count
    return self.current_value