code: def conv_layer(
      input,
      num_input_channels,
      filter_height,
      filter_width,
      num_filters,
      seed=None,
      use_pooling=True,
  ):
      shape = [
          filter_height,
          filter_width,
          num_input_channels,
          num_filters,
      ]
      weights = tf.Variable(
          tf.truncated_normal(shape, stddev=0.05, seed=seed)
      )
      biases = tf.Variable(tf.constant(0.05, shape=[num_filters]))
      layer = tf.nn.conv2d(
          input=input,
          filter=weights,
          strides=[1, 1, 1, 1],
          padding="VALID",
      )
      layer = layer + biases
      if use_pooling:
          layer = tf.nn.max_pool(
              value=layer,
              ksize=[1, input.shape[1] - filter_height + 1, 1, 1],
              strides=[1, 1, 1, 1],
              padding="VALID",
          )
      layer = tf.nn.relu(layer)
      return layer, weights
  
imports: import tensorflow.compat.v1
label_desc: Use image node_id 1 for calling a global function with example usage: conv_layer(input, num_input_channels, filter_height, filter_width, num_filters, seed, use_pooling) and returns: layer,  weights