code: def test_clone(self, filters, strides):
      env = GymEnv(DummyDiscretePixelEnv())
  
      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
              )
  
              qf_clone = qf.clone("another_qf")
  
      # pylint: disable=protected-access
      assert qf_clone._filters == qf._filters
      assert qf_clone._strides == qf._strides
      # pylint: enable=protected-access
      for cloned_param, param in zip(
          qf_clone.parameters.values(), qf.parameters.values()
      ):
          assert np.array_equal(cloned_param, param)
  
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 9 for calling the TestContinuousCNNQFunction obj's underlying member method code with example usage: obj.test_clone(filters, strides) without return types