class_docstr: Test CNNModule.
class_docstr_tok: ["Test","CNNModule","."]
docstr: Check CNNModule is pickeable.
  
  Args:
      hidden_channels (tuple[int]): hidden channels.
      kernel_sizes (tuple[int]): Kernel sizes.
      strides (tuple[int]): strides.
docstr_tok: ["Check","CNNModule","is","pickeable",".","Args",":","hidden_channels","(","tuple","[","int","]",")",":","hidden","channels",".","kernel_sizes","(","tuple","[","int","]",")",":","Kernel","sizes",".","strides","(","tuple","[","int","]",")",":","strides","."]
code: def test_is_pickleable(self, hidden_channels, kernel_sizes, strides):
      """Check CNNModule is pickeable.
  
      Args:
          hidden_channels (tuple[int]): hidden channels.
          kernel_sizes (tuple[int]): Kernel sizes.
          strides (tuple[int]): strides.
  
      """
      model = CNNModule(
          self.input_spec,
          image_format="NCHW",
          hidden_channels=hidden_channels,
          kernel_sizes=kernel_sizes,
          strides=strides,
      )
      output1 = model(self.input)
  
      h = pickle.dumps(model)
      model_pickled = pickle.loads(h)
      output2 = model_pickled(self.input)
  
      assert np.array_equal(torch.all(torch.eq(output1, output2)), True)
  
file_path: garage/tests/garage/torch/modules/test_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
  from garage.torch.modules.cnn_module import _check_spec
label_desc: Use image node_id 4 for calling the TestCNNModule obj's underlying member method code with example usage: obj.test_is_pickleable(hidden_channels, kernel_sizes, strides) without return types