(total_steps, steps_to_skip, epoch_steps)
Generates the number of steps in each epoch before reaching total_steps.

  Args:
    total_steps: int, total number of steps.
    steps_to_skip: int, number of steps to skip because of a restart.
    epoch_steps: iterable of int, numbers of steps in each epoch.

  Yields:
    epoch_steps: int, number of steps in this epoch
Generates the number of steps in each epoch before reaching total_steps.
Generates the number of steps in each epoch before reaching total_steps .
def epochs(total_steps, steps_to_skip, epoch_steps):
  """Generates the number of steps in each epoch before reaching total_steps.

  Args:
    total_steps: int, total number of steps.
    steps_to_skip: int, number of steps to skip because of a restart.
    epoch_steps: iterable of int, numbers of steps in each epoch.

  Yields:
    epoch_steps: int, number of steps in this epoch
  """
  steps_to_go = total_steps - steps_to_skip
  epoch_steps = iter(epoch_steps)

  # Remove the desired number of steps from the stream.
  for steps_this_epoch in epoch_steps:
    if steps_this_epoch > steps_to_skip:
      # Put back the number of steps left in the unfinished epoch.
      epoch_steps = itertools.chain(
          [steps_this_epoch - steps_to_skip], epoch_steps)
    if steps_this_epoch >= steps_to_skip:
      break
    steps_to_skip -= steps_this_epoch

  # Yield the remaining steps per epoch up to total_steps.
  for steps_this_epoch in epoch_steps:
    steps_this_epoch = min(steps_this_epoch, steps_to_go)
    yield steps_this_epoch
    steps_to_go -= steps_this_epoch
    if steps_to_go == 0:
      break
def epochs ( total_steps , steps_to_skip , epoch_steps ) : steps_to_go = total_steps - steps_to_skip epoch_steps = iter ( epoch_steps ) # Remove the desired number of steps from the stream. for steps_this_epoch in epoch_steps : if steps_this_epoch > steps_to_skip : # Put back the number of steps left in the unfinished epoch. epoch_steps = itertools . chain ( [ steps_this_epoch - steps_to_skip ] , epoch_steps ) if steps_this_epoch >= steps_to_skip : break steps_to_skip -= steps_this_epoch # Yield the remaining steps per epoch up to total_steps. for steps_this_epoch in epoch_steps : steps_this_epoch = min ( steps_this_epoch , steps_to_go ) yield steps_this_epoch steps_to_go -= steps_this_epoch if steps_to_go == 0 : break