Scheduler

class srl.rl.schedulers.scheduler.SchedulerConfig

ベースクラス: object

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

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

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

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

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

配列を空にします

set(rate: float)

固定値を使用

y = rate

パラメータ:

rate (float) -- val

set_rate(rate: float)

固定値を使用

y = rate

パラメータ:

rate (float) -- val

set_constant(rate: float)

固定値を使用

y = rate

パラメータ:

rate (float) -- val

add_constant(phase_steps: int, rate: float)

固定値を追加

y = rate

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

  • rate (float) -- val

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

線形に変化

y = start_rate + (end_rate - start_rate) * step

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

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

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

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

線形に変化を追加

y = start_rate + (end_rate - start_rate) * step

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

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

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

set_cosine(phase_steps: int, start_rate: float)

cosに従って0へ変動

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

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

add_cosine(phase_steps: int, start_rate: float)

cosに従って0へ変動

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

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

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

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

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

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

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

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

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

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

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

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

set_polynomial(phase_steps: int, start_rate: float, 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.

add_polynomial(phase_steps: int, start_rate: float, 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.