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