docstr: Return maximum data and label shape for single gpu 
docstr_tok: ["Return","maximum","data","and","label","shape","for","single","gpu"]
code: def infer_shape(self, max_data_shape=None, max_label_shape=None):
      """Return maximum data and label shape for single gpu"""
      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]
      dummy_boxes = np.zeros((0, 5))
      dummy_info = [[max_shapes["data"][2], max_shapes["data"][3], 1.0]]
      dummy_label = {"gt_boxes": dummy_boxes}
      dummy_blur = np.zeros((0,))
      dummy_label["gt_blur"] = dummy_blur
  
      label_dict = {}
      if config.HEAD_BOX:
          head_label_dict = self.aa.assign_anchor_fpn(
              dummy_label, dummy_info, False, prefix="head"
          )
          label_dict.update(head_label_dict)
  
      if config.FACE_LANDMARK:
          dummy_landmarks = np.zeros((0, 5, 3))
          dummy_label["gt_landmarks"] = dummy_landmarks
      face_label_dict = self.aa.assign_anchor_fpn(
          dummy_label, dummy_info, config.FACE_LANDMARK, prefix="face"
      )
      label_dict.update(face_label_dict)
      if config.CASCADE > 0:
          label_dict["gt_boxes"] = np.zeros(
              (0, config.TRAIN.MAX_BBOX_PER_IMAGE, 5), dtype=np.float32
          )
  
      label_list = []
      for k in self.label_name:
          label_list.append(label_dict[k])
      label_shape = [
          (k, tuple([input_batch_size] + list(v.shape[1:])))
          for k, v in zip(self.label_name, label_list)
      ]
      return max_data_shape, label_shape
  
imports: from __future__ import print_function
  import sys
  import mxnet
  import numpy
  import random
  import datetime
  import multiprocessing
  import cv2
  from mxnet.executor_manager import _split_input_slice
  from rcnn.config import config
  from rcnn.io.image import tensor_vstack
  from rcnn.io.rpn import get_rpn_testbatch, get_rpn_batch, assign_anchor_fpn, get_crop_batch, AA
label_desc: Use image node_id 9 for calling the CropLoader obj's underlying member method code with example usage: obj.infer_shape(max_data_shape, max_label_shape) and returns: max_data_shape,  label_shape