code: def compute_output_shape(self, IR_node, kernel_h, kernel_w):
      parent_node = self.IR_graph.get_parent(IR_node.name, [0])
  
      if parent_node.get_attr("_output_shapes"):
          shape = parent_node.get_attr("_output_shapes")[0]
          shape = shape_to_list(shape)
          h_i = shape[1]
          w_i = shape[2]
          pad_h, pad_w = self._get_symmetric_padding(IR_node)
          stride_h = IR_node.get_attr("strides")[1]
          stride_w = IR_node.get_attr("strides")[2]
  
          if IR_node.type == "Pool":
              h_o = (
                  h_i + 2 * pad_h - kernel_h + stride_h - 1
              ) // stride_h + 1
              w_o = (
                  w_i + 2 * pad_w - kernel_w + stride_w - 1
              ) // stride_w + 1
          elif IR_node.type == "Unpool":
              h_o = (h_i - 2 * pad_h - kernel_h + stride_h) * stride_h
              w_o = (w_i - 2 * pad_w - kernel_w + stride_w) * stride_w
          else:
              h_o = (h_i + 2 * pad_h - kernel_h) // stride_h + 1
              w_o = (w_i + 2 * pad_w - kernel_w) // stride_w + 1
          return h_o, w_o
      else:
          assert False
  
imports: from __future__ import division
  import os
  import sys
  import math
  import numpy
  import caffe
  from caffe import layers
  from caffe import params
  from mmdnn.conversion.common.IR.IR_graph import IRGraph, IRGraphNode
  import mmdnn.conversion.common.IR.graph_pb2
  from mmdnn.conversion.common.IR.graph_pb2 import NodeDef, GraphDef, DataType
  from mmdnn.conversion.common.DataStructure.emitter import Emitter
  from mmdnn.conversion.common.utils import *
label_desc: Use image node_id 10 for calling the CaffeEmitter obj's underlying member method code with example usage: obj.compute_output_shape(IR_node, kernel_h, kernel_w) and returns: h_o,  w_o