code: def test_is_pickleable(
      output_dim, hidden_channels, kernel_sizes, strides
  ):
      input_width = 32
      input_height = 32
      in_channel = 3
      input_shape = (in_channel, input_height, input_width)
      input_a = torch.ones(input_shape)
      spec = InOutSpec(
          akro.Box(shape=input_shape, low=-np.inf, high=np.inf),
          akro.Box(shape=(output_dim,), low=-np.inf, high=np.inf),
      )
  
      model = DiscreteCNNModule(
          spec=spec,
          image_format="NCHW",
          hidden_channels=hidden_channels,
          kernel_sizes=kernel_sizes,
          mlp_hidden_nonlinearity=nn.ReLU,
          cnn_hidden_nonlinearity=nn.ReLU,
          strides=strides,
      )
      output1 = model(input_a)
  
      h = pickle.dumps(model)
      model_pickled = pickle.loads(h)
      output2 = model_pickled(input_a)
  
      assert np.array_equal(torch.all(torch.eq(output1, output2)), True)
  
file_path: garage/tests/garage/torch/modules/test_discrete_cnn_module.py
imports: import pickle
  import akro
  import numpy
  import pytest
  import torch
  import torch.nn
  from garage import InOutSpec
  from garage.torch.modules import CNNModule, DiscreteCNNModule, MLPModule
label_desc: Use image node_id 3 for calling a global function with example usage: test_is_pickleable(output_dim, hidden_channels, kernel_sizes, strides) without return types