Scheduler

class srl.rl.schedulers.scheduler.SchedulerConfig(default_scheduler: bool = False)

ベースクラス: object

数値のハイパーパラメータに対してスケジュールによる変更を提供します。 主に学習率に使われることを想定していますが、それ以外でも使用できます。

・配列を使わない場合 setから始まる関数を使ってください。 例えば線形で減少する値を使用する場合は以下です。

>>> sch = SchedulerConfig()
>>> sch.set_linear(1, 0, 100)  # 1から0に100stepで減少
>>> sch.plot()  # 画像で確認

・配列を使う場合 複数のパターンを使うことも可能です。 clear後、addから始まる関数を使ってください。

>>> sch = SchedulerConfig()
>>> sch.clear()
>>> sch.add_linear(0.5, 1, 100)  # 0.5から1に0~100stepで増加
>>> sch.add_linear(1, 0.1, 100)  # 1から0.1に100~200stepで減少
>>> sch.plot()  # 画像で確認
clear()

配列を空にします

set(rate: float)

固定値を使用

y = rate

パラメータ:

rate (float) -- val

set_constant(rate: float)

固定値を使用

y = rate

パラメータ:

rate (float) -- val

add_constant(rate: float, phase_steps: int = 0)

固定値を追加

y = rate

パラメータ:
  • rate (float) -- val

  • phase_steps (int) -- 継続するstep数

set_linear(start_rate: float, end_rate: float, phase_steps: int)

線形に変化

y = start_rate + (end_rate - start_rate) * step

パラメータ:
  • start_rate (float) -- 開始時のrate

  • end_rate (float) -- 終了時のrate

  • phase_steps (int) -- 継続するstep数

add_linear(start_rate: float, end_rate: float, phase_steps: int)

線形に変化を追加

y = start_rate + (end_rate - start_rate) * step

パラメータ:
  • start_rate (float) -- 開始時のrate

  • end_rate (float) -- 終了時のrate

  • phase_steps (int) -- 継続するstep数

set_cosine(start_rate: float, phase_steps: int)

cosに従って0へ変動

パラメータ:
  • start_rate (float) -- 開始時のrate

  • phase_steps (int) -- 継続するstep数

add_cosine(start_rate: float, phase_steps: int)

cosに従って0へ変動

パラメータ:
  • start_rate (float) -- 開始時のrate

  • phase_steps (int) -- 継続するstep数

set_cosine_with_hard_restarts(start_rate: float, phase_steps: int, num_cycles: int)

cosに従って0へ変動、ただしnum_cycles数繰り返す

パラメータ:
  • start_rate (float) -- 開始時のrate

  • phase_steps (int) -- 継続するstep数

  • num_cycles (int) -- 繰り返す回数

add_cosine_with_hard_restarts(start_rate: float, phase_steps: int, num_cycles: int)

cosに従って0へ変動、ただしnum_cycles数繰り返す

パラメータ:
  • start_rate (float) -- 開始時のrate

  • phase_steps (int) -- 継続するstep数

  • num_cycles (int) -- 繰り返す回数

set_polynomial(start_rate: float, phase_steps: int, power: float = 2)

多項式に従って0へ減少

y = start_rate * (1 - step/phase_steps)^power

パラメータ:
  • start_rate (float) -- 開始時のrate

  • phase_steps (int) -- 継続するstep数

  • power (float, optional) -- 強さ、1で線形と同じ. Defaults to 2.

add_polynomial(start_rate: float, phase_steps: int, power: float = 2)

多項式に従って0へ減少

y = start_rate * (1 - step/phase_steps)^power

パラメータ:
  • phase_steps (int) -- 継続するstep数

  • start_rate (float) -- 開始時のrate

  • power (float, optional) -- 強さ、1で線形と同じ. Defaults to 2.

LRSchaduler

class srl.rl.schedulers.lr_scheduler.LRSchedulerConfig(schedule_type: ~typing.Literal['', 'step', 'exp', 'cosine', 'piecewise'] = '', decay_steps: int = 100000, decay_rate: float = 0.1, min_lr: float = 1e-06, warmup_steps: int = 0, piecewise_boundaries: ~typing.List[int] = <factory>, piecewise_values: ~typing.List[float] = <factory>)

ベースクラス: object

学習率スケジューラの設定を保持するデータクラス。

schedule_type

"step" (ステップ減衰), "exp" (指数減衰), "cosine" (余弦アニーリング)

Type:

Literal["", "step", "exp", "cosine"]

decay_steps

学習率を減衰させるステップ数 (正の整数)。

Type:

int

decay_rate

減衰率 (指数減衰やステップ減衰で使用、正の値)。

Type:

float

min_lr

最小学習率 (余弦アニーリングで使用、0 以上 base_lr 未満)。

Type:

float

warmup_steps

ウォームアップ期間のステップ数 (0 以上)。

Type:

int