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

Method __init__

python/singa/opt.py:216–267  ·  view source on GitHub ↗
(self,
                 lr=0.1,
                 momentum=0,
                 dampening=0,
                 weight_decay=0,
                 nesterov=False,
                 dtype=tensor.float32)

Source from the content-addressed store, hash-verified

214 """
215
216 def __init__(self,
217 lr=0.1,
218 momentum=0,
219 dampening=0,
220 weight_decay=0,
221 nesterov=False,
222 dtype=tensor.float32):
223 super(SGD, self).__init__(lr, dtype)
224
225 # init momentum
226 if type(momentum) == float or type(momentum) == int:
227 if momentum < 0.0:
228 raise ValueError("Invalid momentum value: {}".format(momentum))
229 self.momentum = Constant(momentum)
230 elif isinstance(momentum, DecayScheduler):
231 self.momentum = momentum
232 momentum = momentum.init_value
233 else:
234 raise TypeError("Wrong momentum type")
235 self.mom_value = self.momentum(self.step_counter).as_type(self.dtype)
236
237 # init dampening
238 if type(dampening) == float or type(dampening) == int:
239 self.dampening = Constant(dampening)
240 elif isinstance(dampening, DecayScheduler):
241 self.dampening = dampening
242 dampening = dampening.init_value
243 else:
244 raise TypeError("Wrong dampening type")
245 self.dam_value = self.dampening(self.step_counter).as_type(self.dtype)
246
247 # init weight_decay
248 if type(weight_decay) == float or type(weight_decay) == int:
249 if weight_decay < 0.0:
250 raise ValueError(
251 "Invalid weight_decay value: {}".format(weight_decay))
252 self.weight_decay = Constant(weight_decay)
253 elif isinstance(weight_decay, DecayScheduler):
254 self.weight_decay = weight_decay
255 else:
256 raise TypeError("Wrong weight_decay type")
257 self.decay_value = self.weight_decay(self.step_counter).as_type(
258 self.dtype)
259
260 # init other params
261 self.nesterov = nesterov
262 self.moments = dict()
263
264 # check value
265 if nesterov and (momentum <= 0 or dampening != 0):
266 raise ValueError(
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.

Callers 4

__init__Method · 0.45
__init__Method · 0.45
__init__Method · 0.45
__init__Method · 0.45

Calls 3

typeFunction · 0.85
ConstantClass · 0.70
as_typeMethod · 0.45

Tested by

no test coverage detected