MCPcopy Create free account
hub / github.com/baidu/DDParser / LinearDecay

Class LinearDecay

ddparser/ernie/optimization.py:162–202  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

160
161
162class LinearDecay(D.learning_rate_scheduler.LearningRateDecay):
163 def __init__(self,
164 learning_rate,
165 warmup_steps,
166 decay_steps,
167 end_learning_rate=0,
168 power=1.0,
169 cycle=False,
170 begin=0,
171 step=1,
172 dtype='float32'):
173 super(LinearDecay, self).__init__(begin, step, dtype)
174 self.learning_rate = learning_rate
175 self.warmup_steps = warmup_steps
176 self.decay_steps = decay_steps
177 self.end_learning_rate = end_learning_rate
178 self.power = power
179 self.cycle = cycle
180
181 def step(self):
182 if self.step_num < self.warmup_steps:
183 decayed_lr = self.learning_rate * (self.step_num /
184 self.warmup_steps)
185 decayed_lr = self.create_lr_var(decayed_lr)
186 else:
187 tmp_step_num = self.step_num
188 tmp_decay_steps = self.decay_steps
189 if self.cycle:
190 div_res = fluid.layers.ceil(
191 self.create_lr_var(tmp_step_num / float(self.decay_steps)))
192 if tmp_step_num == 0:
193 div_res = self.create_lr_var(1.0)
194 tmp_decay_steps = self.decay_steps * div_res
195 else:
196 tmp_step_num = self.create_lr_var(
197 tmp_step_num
198 if tmp_step_num < self.decay_steps else self.decay_steps)
199 decayed_lr = (self.learning_rate - self.end_learning_rate) * \
200 ((1 - tmp_step_num / tmp_decay_steps) ** self.power) + self.end_learning_rate
201
202 return decayed_lr
203

Callers 1

trainFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected