class_docstr: Combine different :class:`~poutyne.Phase` instances
  in an :class:`~poutyne.OptimizerPolicy` and execute the policies in a
  row.
  
  Args:
      phases (List[~poutyne.Phase]):
          A list of :class:`~poutyne.Phase` instances.
      initial_step (int): The step to start the policy in. Used for restarting.
class_docstr_tok: ["Combine","different",":","class",":","`","~poutyne.Phase","`","instances","in","an",":","class",":","`","~poutyne.OptimizerPolicy","`","and","execute","the","policies","in","a","row",".","Args",":","phases","(","List","[","~poutyne.Phase","]",")",":","A","list","of",":","class",":","`","~poutyne.Phase","`","instances",".","initial_step","(","int",")",":","The","step","to","start","the","policy","in",".","Used","for","restarting","."]
code: def __iter__(self):
      space_iter = islice(
          chain.from_iterable(self.phases), self.current_step, None
      )
      for param_dict in space_iter:
          self.current_step += 1
          yield param_dict
  
imports: import contextlib
  from collections import OrderedDict
  from itertools import chain, islice
  from math import cos, pi
  from typing import Dict, List, Optional, Tuple
  from poutyne.framework.callbacks.callbacks import Callback
label_desc: Use image node_id 3 for calling the OptimizerPolicy obj's underlying member method code with example usage: obj.__iter__() without return types