code: def decide_slices(self, data_shapes):
          
          assert len(data_shapes) > 0
          major_axis = [DataDesc.get_batch_axis(x.layout) for x in data_shapes]
  
          for (name, shape), axis in zip(data_shapes, major_axis):
              if axis == -1:
                  continue
  
              batch_size = shape[axis]
              if self.batch_size is not None:
                  assert batch_size == self.batch_size, ("all data must have the same batch size: "
                                                         + ("batch_size = %d, but " % self.batch_size)
                                                         + ("%s has shape %s" % (name, shape)))
              else:
                  self.batch_size = batch_size
                  self.slices = _split_input_slice(self.batch_size, self.workload)
  
          return major_axis
docs: Decide the slices for each context according to the workload.
  
          Parameters
          ----------
          data_shapes : list
              list of (name, shape) specifying the shapes for the input data or label.