class_docstr: Currently we only use it to infer caffe shape, we use tensorflow engine
  to infer tensorflow op shapes, since tensorflow has too many ops.
class_docstr_tok: ["Currently","we","only","use","it","to","infer","caffe","shape",",","we","use","tensorflow","engine","to","infer","tensorflow","op","shapes",",","since","tensorflow","has","too","many","ops","."]
code: def infer_shape_slice(self, op):
      output_shape = self._output_shape_cache[op.input[0]]
      axis = ConverterUtil.get_arg(op, MaceKeyword.mace_axis_str).i
      output_shape[axis] = (int)(output_shape[axis] / len(op.output))
      output_shapes = []
      for _ in op.output:
          output_shapes.append(output_shape)
      self.add_output_shape(op, output_shapes)
  
imports: import math
  import numpy
  import six
  from transform.transformer import Transformer
  from transform.base_converter import DataFormat
  from transform.base_converter import MaceOp
  from transform.base_converter import MaceKeyword
  from transform.base_converter import ConverterUtil
  from utils.util import mace_check
label_desc: Use image node_id 9 for calling the ShapeInference obj's underlying member method code with example usage: obj.infer_shape_slice(op) without return types