code: def test_is_pickleable(self, filters, strides):
      env = GymEnv(DummyDiscretePixelEnv())
      obs = env.reset()[0]
  
      with mock.patch(
          ("garage.tf.models." "cnn_mlp_merge_model.CNNModel"),
          new=SimpleCNNModel,
      ):
          with mock.patch(
              ("garage.tf.models." "cnn_mlp_merge_model.MLPMergeModel"),
              new=SimpleMLPMergeModel,
          ):
              qf = ContinuousCNNQFunction(
                  env_spec=env.spec, filters=filters, strides=strides
              )
  
      action_dim = env.action_space.shape
  
      obs = env.step(1).observation
      act = np.full(action_dim, 0.5)
      _, _ = qf.inputs
  
      with tf.compat.v1.variable_scope(
          "ContinuousCNNQFunction/SimpleMLPMergeModel", 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 = qf.get_qval([obs], [act])
  
      h_data = pickle.dumps(qf)
      with tf.compat.v1.Session(graph=tf.Graph()):
          qf_pickled = pickle.loads(h_data)
          _, _ = qf_pickled.inputs
          output2 = qf_pickled.get_qval([obs], [act])
  
      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.q_functions import ContinuousCNNQFunction
  from tests.fixtures import TfGraphTestCase
  from tests.fixtures.envs.dummy import DummyDictEnv, DummyDiscreteEnv, DummyDiscretePixelEnv
  from tests.fixtures.models import SimpleCNNModel, SimpleCNNModelWithMaxPooling, SimpleMLPMergeModel
label_desc: Use image node_id 8 for calling the TestContinuousCNNQFunction obj's underlying member method code with example usage: obj.test_is_pickleable(filters, strides) without return types