parameters: (cls, op, op_t)
return_statement: return node
docstring: get a onnx node from singa _Conv2d and _Pooling2d operator
          Args:
              op: a given operator
          Args:
              op_t: the tensor of the operator
          Returns: 
              the onnx node
docstring_summary: get a onnx node from singa _Conv2d and _Pooling2d operator
          Args:
              op: a given operator
          Args:
              op_t: the tensor of the operator
          Returns: 
              the onnx node
docstring_tokens: get a onnx node from singa _Conv2d and _Pooling2d operator Args : op : a given operator Args : op_t : the tensor of the operator Returns : the onnx node
function: def _create_conv_pool(cls, op, op_t):
          """
          get a onnx node from singa _Conv2d and _Pooling2d operator
          Args:
              op: a given operator
          Args:
              op_t: the tensor of the operator
          Returns: 
              the onnx node
          """
          node = cls._common_singa_tensor_to_onnx_node(op, op_t)
  
          k = [op.handle.kernel_h, op.handle.kernel_w]
          s = [op.handle.stride_h, op.handle.stride_w]
          oddp = op.odd_padding
          p = [
              op.handle.pad_h + oddp[0],
              op.handle.pad_w + oddp[1],
              op.handle.pad_w + oddp[2],
              op.handle.pad_h + oddp[3],
          ]
  
          node.attribute.extend([
              helper.make_attribute('kernel_shape', k),
              helper.make_attribute('pads', p),
              helper.make_attribute('strides', s),
          ])
          if cls._get_singa_op_type(op) == '_Conv2d':
              node.op_type = cls._rename_operators.get('_Conv2d')
              node.attribute.extend([
                  helper.make_attribute('group', op.handle.group),
                  helper.make_attribute('auto_pad', 'NOTSET'),
              ])
  
          elif op.handle.is_max_pooling:
              node.op_type = cls._rename_operators.get('MaxPool2d')
          else:
              node.op_type = cls._rename_operators.get('AvgPool2d')
          return node
function_tokens: def _create_conv_pool ( cls , op , op_t ) : node = cls . _common_singa_tensor_to_onnx_node ( op , op_t ) k = [ op . handle . kernel_h , op . handle . kernel_w ] s = [ op . handle . stride_h , op . handle . stride_w ] oddp = op . odd_padding p = [ op . handle . pad_h + oddp [ 0 ] , op . handle . pad_w + oddp [ 1 ] , op . handle . pad_w + oddp [ 2 ] , op . handle . pad_h + oddp [ 3 ] , ] node . attribute . extend ( [ helper . make_attribute ( 'kernel_shape' , k ) , helper . make_attribute ( 'pads' , p ) , helper . make_attribute ( 'strides' , s ) , ] ) if cls . _get_singa_op_type ( op ) == '_Conv2d' : node . op_type = cls . _rename_operators . get ( '_Conv2d' ) node . attribute . extend ( [ helper . make_attribute ( 'group' , op . handle . group ) , helper . make_attribute ( 'auto_pad' , 'NOTSET' ) , ] ) elif op . handle . is_max_pooling : node . op_type = cls . _rename_operators . get ( 'MaxPool2d' ) else : node . op_type = cls . _rename_operators . get ( 'AvgPool2d' ) return node