class_docstr: Implementation of `Lookahead Optimizer: k steps forward, 1 step back <https://arxiv.org/abs/1907.08610>`_
  
  Args:
      :param optimizer:       - the optimizer to work with (sgd, adam etc)
      :param k: (int)         - number of steps to look ahead (default=5)
      :param alpha: (float)   - slow weights step size
code: def step(self, closure=None):
      loss = self.optimizer.step(closure)
      for group in self.param_groups:
          if group["counter"] == 0:
              self.update(group)
          group["counter"] += 1
          if group["counter"] >= self.k:
              group["counter"] = 0
      return loss
  
file_path: pywick/pywick/optimizers/lookahead.py
imports: from collections import defaultdict
  from torch.optim.optimizer import Optimizer
  import torch
label_desc: Use image node_id 4 for calling the Lookahead obj's underlying member method code with example usage: obj.step(closure) and returns: loss