code: def test_is_pickleable(self, filters, strides):
      with mock.patch(
          ("garage.tf.q_functions." "discrete_cnn_q_function.CNNModel"),
          new=SimpleCNNModel,
      ):
          with mock.patch(
              (
                  "garage.tf.q_functions."
                  "discrete_cnn_q_function.MLPModel"
              ),
              new=SimpleMLPModel,
          ):
              qf = DiscreteCNNQFunction(
                  env_spec=self.env.spec,
                  filters=filters,
                  strides=strides,
                  dueling=False,
              )
      with tf.compat.v1.variable_scope(
          "DiscreteCNNQFunction/SimpleMLPModel", reuse=True
      ):
          return_var = tf.compat.v1.get_variable("return_var")
      # assign it to all one
      return_var.load(tf.ones_like(return_var).eval())
  
      output1 = self.sess.run(
          qf.q_vals, feed_dict={qf.input: [self.obs]}
      )
  
      h_data = pickle.dumps(qf)
      with tf.compat.v1.Session(graph=tf.Graph()) as sess:
          qf_pickled = pickle.loads(h_data)
          output2 = sess.run(
              qf_pickled.q_vals,
              feed_dict={qf_pickled.input: [self.obs]},
          )
  
      assert np.array_equal(output1, output2)
  
imports: import pickle
  from unittest import mock
  import numpy
  import pytest
  import tensorflow
  from garage.envs import GymEnv
  from garage.tf.models import CNNModel
  from garage.tf.q_functions import DiscreteCNNQFunction
  from tests.fixtures import TfGraphTestCase
  from tests.fixtures.envs.dummy import DummyDiscreteEnv, DummyDiscretePixelEnv
  from tests.fixtures.models import SimpleCNNModel, SimpleCNNModelWithMaxPooling, SimpleMLPModel
label_desc: Use image node_id 9 for calling the TestDiscreteCNNQFunction obj's underlying member method code with example usage: obj.test_is_pickleable(filters, strides) without return types