docstr: Defines conv layer, batch norm and leaky ReLU
  
  Parameters
  ----------
  inputs: TensorFlow Tensor
      4d tensor of NHWC format
  shape: list
      Shape of the conv layer
  batch_norm: Bool
      (True or False) to add batch norm layer. This is used to add batch norm to all conv layers but the last.
  name: string
      Name for the conv layer
  init_weights: Dict of numpy arrays
      A mapping of layer names to init weights
  batch_name: string
      Name for the batch norm layer
  
  Returns
  -------
  conv: TensorFlow Tensor
      Return result from combining conv, batch norm and leaky ReLU or conv and bias as needed
docstr_tok: ["Defines","conv","layer",",","batch","norm","and","leaky","ReLU","Parameters","--","--","--","--","--","inputs",":","TensorFlow","Tensor","4d","tensor","of","NHWC","format","shape",":","list","Shape","of","the","conv","layer","batch_norm",":","Bool","(","True","or","False",")","to","add","batch","norm","layer",".","This","is","used","to","add","batch","norm","to","all","conv","layers","but","the","last",".","name",":","string","Name","for","the","conv","layer","init_weights",":","Dict","of","numpy","arrays","A","mapping","of","layer","names","to","init","weights","batch_name",":","string","Name","for","the","batch","norm","layer","Returns","--","--","--","-","conv",":","TensorFlow","Tensor","Return","result","from","combining","conv",",","batch","norm","and","leaky","ReLU","or","conv","and","bias","as","needed"]
code: def conv_layer(
      self,
      inputs,
      shape,
      name,
      batch_name,
      init_weights,
      batch_norm=True,
  ):
      """
      Defines conv layer, batch norm and leaky ReLU
  
      Parameters
      ----------
      inputs: TensorFlow Tensor
          4d tensor of NHWC format
      shape: list
          Shape of the conv layer
      batch_norm: Bool
          (True or False) to add batch norm layer. This is used to add batch norm to all conv layers but the last.
      name: string
          Name for the conv layer
      init_weights: Dict of numpy arrays
          A mapping of layer names to init weights
      batch_name: string
          Name for the batch norm layer
  
      Returns
      -------
      conv: TensorFlow Tensor
          Return result from combining conv, batch norm and leaky ReLU or conv and bias as needed
      """
      _tf = _lazy_import_tensorflow()
  
      weight = _tf.Variable(
          init_weights[name + "weight"].transpose(2, 3, 1, 0),
          trainable=True,
          name=name + "weight",
      )
  
      conv = _tf.nn.conv2d(
          inputs,
          weight,
          strides=[1, 1, 1, 1],
          padding="SAME",
          name=name,
      )
  
      if batch_norm:
          conv = self.batch_norm_wrapper(
              conv, batch_name, init_weights, is_training=self.is_train
          )
          alpha = 0.1
          conv = _tf.maximum(alpha * conv, conv)
      else:
          bias = _tf.Variable(
              _tf.constant(0.1, shape=[shape[3]]), name=name + "bias"
          )
          conv = _tf.add(conv, bias)
  
      return conv
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  import numpy
  from .._tf_model import TensorFlowModel
  from turicreate._deps.minimal_package import _minimal_package_import_check
  import turicreate.toolkits._tf_utils
label_desc: Use image node_id 5 for calling the ODTensorFlowModel obj's underlying member method code with example usage: obj.conv_layer(inputs, shape, name, batch_name, init_weights, batch_norm) and returns: conv