code: def test_is_pickleable(self, filters, strides):
      model = CNNModel(
          input_dim=self.input_dim,
          filters=filters,
          strides=strides,
          name="cnn_model",
          padding="VALID",
          hidden_w_init=tf.constant_initializer(1),
          hidden_nonlinearity=None,
      )
      outputs = model.build(self._input_ph).outputs
      with tf.compat.v1.variable_scope("cnn_model/cnn/h0", reuse=True):
          bias = tf.compat.v1.get_variable("bias")
      bias.load(tf.ones_like(bias).eval())
  
      output1 = self.sess.run(
          outputs, feed_dict={self._input_ph: self.obs_input}
      )
      h = pickle.dumps(model)
      with tf.compat.v1.Session(graph=tf.Graph()) as sess:
          model_pickled = pickle.loads(h)
          # pylint: disable=unsubscriptable-object
          input_shape = self.obs_input.shape[
              1:
          ]  # height, width, channel
          input_ph = tf.compat.v1.placeholder(
              tf.float32, shape=(None,) + input_shape, name="input"
          )
          outputs = model_pickled.build(input_ph).outputs
          output2 = sess.run(
              outputs, feed_dict={input_ph: self.obs_input}
          )
  
          assert np.array_equal(output1, output2)
  
file_path: garage/tests/garage/tf/models/test_cnn_model.py
imports: import pickle
  import numpy
  import pytest
  import tensorflow
  from garage.tf.models import CNNModel, CNNModelWithMaxPooling
  from tests.fixtures import TfGraphTestCase
label_desc: Use image node_id 4 for calling the TestCNNModel obj's underlying member method code with example usage: obj.test_is_pickleable(filters, strides) without return types