# Copyright 2020 Huawei Technologies Co., Ltd # # 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. # ============================================================================ """learning rate generator""" import numpy as np def get_lr(current_step, lr_max, total_epochs, steps_per_epoch): """ generate learning rate array Args: current_step(int): current steps of the training lr_max(float): max learning rate total_epochs(int): total epoch of training steps_per_epoch(int): steps of one epoch Returns: np.array, learning rate array """ lr_each_step = [] total_steps = steps_per_epoch * total_epochs decay_epoch_index = [0.8 * total_steps] for i in range(total_steps): if i < decay_epoch_index[0]: lr = lr_max else: lr = lr_max * 0.1 lr_each_step.append(lr) lr_each_step = np.array(lr_each_step).astype(np.float32) learning_rate = lr_each_step[current_step:] return learning_rate