class_docstr: Allows dynamic batch training, extends pooling batcher with a scheduler
  config, which specifies how batch size should increase
class_docstr_tok: ["Allows","dynamic","batch","training",",","extends","pooling","batcher","with","a","scheduler","config",",","which","specifies","how","batch","size","should","increase"]
code: def step_epoch(self):
      self.curr_epoch += 1
      if self.curr_epoch > self.scheduler_config.epoch_period:
          # if past the dynamic period just return
          # the batch size
          self.curr_batch_size = self.scheduler_config.end_batch_size
      else:
          if self.curr_epoch % self.scheduler_config.step_size == 0:
              old_size = self.curr_batch_size
              new_size = self.compute_dynamic_batch_size(
                  curr_epoch=self.curr_epoch,
                  scheduler_config=self.scheduler_config,
                  curr_steps=self.curr_epoch
                  // self.scheduler_config.step_size,
              )
  
              print(
                  f"increasing batch size from {old_size} to {new_size}"
              )
  
              self.curr_batch_size = new_size
  
imports: import math
  from typing import Iterable
  from pytext.common.constants import Stage
  from pytext.config.module_config import ModuleConfig
  from .data import PoolingBatcher
  from .sources import RawExample
label_desc: Use image node_id 4 for calling the DynamicPoolingBatcher obj's underlying member method code with example usage: obj.step_epoch() without return types