code: def test_clone(self, filters, strides, padding, hidden_sizes):
      env = GymEnv(DummyDiscretePixelEnv())
      policy = CategoricalCNNPolicy(
          env_spec=env.spec,
          filters=filters,
          strides=strides,
          padding=padding,
          hidden_sizes=hidden_sizes,
      )
  
      policy_clone = policy.clone("CategoricalCNNPolicyClone")
      assert policy.env_spec == policy_clone.env_spec
      for cloned_param, param in zip(
          policy_clone.parameters.values(), policy.parameters.values()
      ):
          assert np.array_equal(cloned_param, param)
  
file_path: garage/tests/garage/tf/policies/test_categorical_cnn_policy.py
imports: import pickle
  from unittest import mock
  import numpy
  import pytest
  import tensorflow
  from garage.envs import GymEnv
  from garage.tf.policies import CategoricalCNNPolicy
  from tests.fixtures import TfGraphTestCase
  from tests.fixtures.envs.dummy import DummyDictEnv, DummyDiscretePixelEnv
label_desc: Use image node_id 4 for calling the TestCategoricalCNNPolicyWithModel obj's underlying member method code with example usage: obj.test_clone(filters, strides, padding, hidden_sizes) without return types