'Return maximum data and label shape for single gpu'

def infer_shape(self, max_data_shape=None, max_label_shape=None):

    if (max_data_shape is None):
        max_data_shape = []
    if (max_label_shape is None):
        max_label_shape = []
    max_shapes = dict((max_data_shape + max_label_shape))
    input_batch_size = max_shapes['data'][0]
    im_info = [[max_shapes['data'][2], max_shapes['data'][3], 1.0]]
    (_, feat_shape, _) = self.feat_sym.infer_shape(**max_shapes)
    label = assign_anchor(feat_shape[0], np.zeros((0, 5)), im_info, self.feat_stride, self.anchor_scales, self.anchor_ratios, self.allowed_border)
    label = [label[k] for k in self.label_name]
    label_shape = [(k, tuple(([input_batch_size] + list(v.shape[1:])))) for (k, v) in zip(self.label_name, label)]
    return (max_data_shape, label_shape)
