AdvaitBERT-AI_Explanability
/
models
/official
/modeling
/optimization
/configs
/learning_rate_config.py
# Lint as: python3 | |
# Copyright 2019 The TensorFlow Authors. All Rights Reserved. | |
# | |
# Licensed under the Apache License, Version 2.0 (the "License"); | |
# you may not use this file except in compliance with the License. | |
# You may obtain a copy of the License at | |
# | |
# http://www.apache.org/licenses/LICENSE-2.0 | |
# | |
# Unless required by applicable law or agreed to in writing, software | |
# distributed under the License is distributed on an "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
# See the License for the specific language governing permissions and | |
# limitations under the License. | |
# ============================================================================== | |
"""Dataclasses for learning rate schedule config.""" | |
from typing import List, Optional | |
import dataclasses | |
from official.modeling.hyperparams import base_config | |
class StepwiseLrConfig(base_config.Config): | |
"""Configuration for stepwise learning rate decay. | |
This class is a container for the piecewise constant learning rate scheduling | |
configs. It will configure an instance of PiecewiseConstantDecay keras | |
learning rate schedule. | |
An example (from keras docs): use a learning rate that's 1.0 for the first | |
100001 steps, 0.5 for the next 10000 steps, and 0.1 for any additional steps. | |
```python | |
boundaries: [100000, 110000] | |
values: [1.0, 0.5, 0.1] | |
Attributes: | |
name: The name of the learning rate schedule. Defaults to PiecewiseConstant. | |
boundaries: A list of ints of strictly increasing entries. | |
Defaults to None. | |
values: A list of floats that specifies the values for the intervals defined | |
by `boundaries`. It should have one more element than `boundaries`. | |
The learning rate is computed as follows: | |
[0, boundaries[0]] -> values[0] | |
[boundaries[0], boundaries[1]] -> values[1] | |
[boundaries[n-1], boundaries[n]] -> values[n] | |
[boundaries[n], end] -> values[n+1] | |
Defaults to None. | |
""" | |
name: str = 'PiecewiseConstantDecay' | |
boundaries: Optional[List[int]] = None | |
values: Optional[List[float]] = None | |
class ExponentialLrConfig(base_config.Config): | |
"""Configuration for exponential learning rate decay. | |
This class is a containers for the exponential learning rate decay configs. | |
Attributes: | |
name: The name of the learning rate schedule. Defaults to ExponentialDecay. | |
initial_learning_rate: A float. The initial learning rate. Defaults to | |
None. | |
decay_steps: A positive integer that is used for decay computation. | |
Defaults to None. | |
decay_rate: A float. Defaults to None. | |
staircase: A boolean, if true, learning rate is decreased at discreate | |
intervals. Defaults to False. | |
""" | |
name: str = 'ExponentialDecay' | |
initial_learning_rate: Optional[float] = None | |
decay_steps: Optional[int] = None | |
decay_rate: Optional[float] = None | |
staircase: Optional[bool] = None | |
class PolynomialLrConfig(base_config.Config): | |
"""Configuration for polynomial learning rate decay. | |
This class is a containers for the polynomial learning rate decay configs. | |
Attributes: | |
name: The name of the learning rate schedule. Defaults to PolynomialDecay. | |
initial_learning_rate: A float. The initial learning rate. Defaults to | |
None. | |
decay_steps: A positive integer that is used for decay computation. | |
Defaults to None. | |
end_learning_rate: A float. The minimal end learning rate. | |
power: A float. The power of the polynomial. Defaults to linear, 1.0. | |
cycle: A boolean, whether or not it should cycle beyond decay_steps. | |
Defaults to False. | |
""" | |
name: str = 'PolynomialDecay' | |
initial_learning_rate: Optional[float] = None | |
decay_steps: Optional[int] = None | |
end_learning_rate: float = 0.0001 | |
power: float = 1.0 | |
cycle: bool = False | |
class CosineLrConfig(base_config.Config): | |
"""Configuration for Cosine learning rate decay. | |
This class is a containers for the cosine learning rate decay configs, | |
tf.keras.experimental.CosineDecay. | |
Attributes: | |
name: The name of the learning rate schedule. Defaults to CosineDecay. | |
initial_learning_rate: A float. The initial learning rate. Defaults to | |
None. | |
decay_steps: A positive integer that is used for decay computation. | |
Defaults to None. | |
alpha: A float. Minimum learning rate value as a fraction of | |
initial_learning_rate. | |
""" | |
name: str = 'CosineDecay' | |
initial_learning_rate: Optional[float] = None | |
decay_steps: Optional[int] = None | |
alpha: float = 0.0 | |
class LinearWarmupConfig(base_config.Config): | |
"""Configuration for linear warmup schedule config. | |
This class is a container for the linear warmup schedule configs. | |
Warmup_learning_rate is the initial learning rate, the final learning rate of | |
the warmup period is the learning_rate of the optimizer in use. The learning | |
rate at each step linearly increased according to the following formula: | |
warmup_learning_rate = warmup_learning_rate + | |
step / warmup_steps * (final_learning_rate - warmup_learning_rate). | |
Using warmup overrides the learning rate schedule by the number of warmup | |
steps. | |
Attributes: | |
name: The name of warmup schedule. Defaults to linear. | |
warmup_learning_rate: Initial learning rate for the warmup. Defaults to 0. | |
warmup_steps: Warmup steps. Defaults to None. | |
""" | |
name: str = 'linear' | |
warmup_learning_rate: float = 0 | |
warmup_steps: Optional[int] = None | |
class PolynomialWarmupConfig(base_config.Config): | |
"""Configuration for linear warmup schedule config. | |
This class is a container for the polynomial warmup schedule configs. | |
Attributes: | |
name: The name of warmup schedule. Defaults to Polynomial. | |
power: Polynomial power. Defaults to 1. | |
warmup_steps: Warmup steps. Defaults to None. | |
""" | |
name: str = 'polynomial' | |
power: float = 1 | |
warmup_steps: Optional[int] = None | |