'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.'

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
