code: def __next__(self):
      if self.batch_idx < self.num_batches:
          data = self.data_slices[0][
              self.batch_size
              * self.batch_idx : self.batch_size
              * (self.batch_idx + 1)
          ]
          label = None
          if len(self.data_slices) > 1:
              label = self.data_slices[1][
                  self.batch_size
                  * self.batch_idx : self.batch_size
                  * (self.batch_idx + 1)
              ]
          self.batch_idx += 1
          return (data, label) if label is not None else (data,)
      else:
          raise StopIteration
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  import logging
  from math import ceil
  import numpy
  import six
  import turicreate
  import turicreate.toolkits._internal_utils
  from turicreate.toolkits._main import ToolkitError
  from turicreate.toolkits._model import CustomModel
  from turicreate.toolkits._model import PythonProxy
  from turicreate.toolkits import _coreml_utils
  from turicreate._deps.minimal_package import _minimal_package_import_check
label_desc: Use image node_id 3 for calling the _NumPyDataIterator obj's underlying member method code with example usage: obj.__next__() and returns: unknown