MCPcopy Create free account
hub / github.com/apache/singa / apply

Method apply

python/singa/opt.py:269–310  ·  view source on GitHub ↗

Performs a single optimization step. Args: param_name(String): the name of the param param_value(Tensor): param values to be update in-place grad(Tensor): param gradients; the values may be updated in this function; can

(self, param_name, param_value, param_grad)

Source from the content-addressed store, hash-verified

267 "Nesterov momentum requires a momentum and zero dampening")
268
269 def apply(self, param_name, param_value, param_grad):
270 """Performs a single optimization step.
271
272 Args:
273 param_name(String): the name of the param
274 param_value(Tensor): param values to be update in-place
275 grad(Tensor): param gradients; the values may be updated
276 in this function; cannot use it anymore
277 """
278 assert param_value.shape == param_grad.shape, ("shape mismatch",
279 param_value.shape,
280 param_grad.shape)
281 self.device_check(param_value, self.step_counter, self.lr_value,
282 self.mom_value, self.dam_value, self.decay_value)
283
284 # derive dtype from input
285 assert param_value.dtype == self.dtype
286
287 # TODO add branch operator
288 # if self.decay_value != 0:
289 if self.weight_decay.init_value != 0:
290 singa.Axpy(self.decay_value.data, param_value.data, param_grad.data)
291
292 if self.momentum.init_value != 0:
293 if param_name not in self.moments:
294 flag = param_value.device.graph_enabled()
295 param_value.device.EnableGraph(False)
296 self.moments[param_name] = tensor.zeros_like(param_value)
297 param_value.device.EnableGraph(flag)
298
299 buf = self.moments[param_name]
300 buf *= self.mom_value
301 alpha = 1.0 - self.dam_value
302 singa.Axpy(alpha.data, param_grad.data, buf.data)
303
304 if self.nesterov:
305 singa.Axpy(self.mom_value.data, buf.data, param_grad.data)
306 else:
307 param_grad = buf
308
309 minus_lr = 0.0 - self.lr_value
310 singa.Axpy(minus_lr.data, param_grad.data, param_value.data)
311
312 def step(self):
313 # increment step counter, lr and moment

Callers 8

test_sgd_const_lrMethod · 0.95
_retraining_helperMethod · 0.95
trainFunction · 0.95
trainFunction · 0.95

Calls 3

graph_enabledMethod · 0.80
EnableGraphMethod · 0.80
device_checkMethod · 0.45