code: def testAddConvLayers(self):
      batch_size = 3
      num_state_dims = 5
      num_actions = 2
      states = tf.random.uniform([batch_size, 5, 5, num_state_dims])
      network = q_network.QNetwork(
          input_tensor_spec=tensor_spec.TensorSpec(
              [5, 5, num_state_dims], tf.float32
          ),
          action_spec=tensor_spec.BoundedTensorSpec(
              [1], tf.int32, 0, 1
          ),
          conv_layer_params=((16, 3, 2),),
      )
      q_values, _ = network(states)
      self.assertAllEqual(
          q_values.shape.as_list(), [batch_size, num_actions]
      )
      self.assertEqual(len(network.trainable_variables), 8)
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import gin
  import tensorflow
  from tf_agents.networks import q_network
  from tf_agents.specs import tensor_spec
label_desc: Use image node_id 4 for calling the SingleObservationSingleActionTest obj's underlying member method code with example usage: obj.testAddConvLayers() without return types