in lib/optim/omd.py [0:0]
def step(self, closure=None):
loss = None
if closure is not None:
loss = closure()
for group in self.param_groups:
for p in group['params']:
if p.grad is None:
continue
d_p = p.grad.data
state = self.state[p]
# State initialization
if len(state) == 0:
state['previous_update'] = torch.zeros_like(d_p)
p.data.add_(-2*group['lr'], d_p).add_(group['lr']*state['previous_update'])
state['previous_update'] = d_p
return loss