code: def emit_UpSampling2D(self, IR_node):
      scales = IR_node.get_attr("scales")
      scale = tuple(scales)[0]
  
      shape = IR_node.get_attr("_output_shapes")[0]
      shape = shape_to_list(shape)
  
      self.add_body(
          1,
          "n.{:<15} = L.Deconvolution(n.{}, convolution_param=dict(kernel_size={}, stride={}, pad={}, num_output={}, group={}, bias_term={}), param=[dict(lr_mult=0)], ntop=1)".format(
              IR_node.variable_name,
              IR_node.in_edges[0],
              2 * scale - scale % 2,
              scale,
              int(math.ceil((scale - 1) / 2)),
              shape[-1],
              shape[-1],
              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 51 for calling the CaffeEmitter obj's underlying member method code with example usage: obj.emit_UpSampling2D(IR_node) without return types