code: def test_save_load(self):
      for model_class in self.all_model_classes:
          (
              config,
              inputs_dict,
          ) = self.model_tester.prepare_config_and_inputs_for_model_class(
              model_class
          )
  
          model = model_class(config)
          model.to(torch_device)
          model.eval()
          with torch.no_grad():
              outputs = model(
                  **self._prepare_for_class(inputs_dict, model_class)
              )
  
          if (
              model_class.__name__
              == "PerceiverForMultimodalAutoencoding"
          ):
              for modality in outputs[0].keys():
                  out_2 = outputs[0][modality].cpu().numpy()
                  out_2[np.isnan(out_2)] = 0
  
                  with tempfile.TemporaryDirectory() as tmpdirname:
                      model.save_pretrained(tmpdirname)
                      model = model_class.from_pretrained(tmpdirname)
                      model.to(torch_device)
                      with torch.no_grad():
                          after_outputs = model(
                              **self._prepare_for_class(
                                  inputs_dict, model_class
                              )
                          )
  
                      # Make sure we don't have nans
                      out_1 = after_outputs[0][modality].cpu().numpy()
                      out_1[np.isnan(out_1)] = 0
                      max_diff = np.amax(np.abs(out_1 - out_2))
                      self.assertLessEqual(max_diff, 1e-5)
  
          else:
              out_2 = outputs[0].cpu().numpy()
              out_2[np.isnan(out_2)] = 0
  
              with tempfile.TemporaryDirectory() as tmpdirname:
                  model.save_pretrained(tmpdirname)
                  model = model_class.from_pretrained(tmpdirname)
                  model.to(torch_device)
                  with torch.no_grad():
                      after_outputs = model(
                          **self._prepare_for_class(
                              inputs_dict, model_class
                          )
                      )
  
                  # Make sure we don't have nans
                  out_1 = after_outputs[0].cpu().numpy()
                  out_1[np.isnan(out_1)] = 0
                  max_diff = np.amax(np.abs(out_1 - out_2))
                  self.assertLessEqual(max_diff, 1e-5)
  
imports: import copy
  import inspect
  import math
  import tempfile
  import unittest
  import warnings
  from typing import Dict, List, Tuple
  import numpy
  from datasets import load_dataset
  from transformers import PerceiverConfig
  from transformers.models.auto import get_values
  from transformers.testing_utils import require_torch, require_torch_multi_gpu, require_vision, slow, torch_device
  from transformers.utils import is_torch_available, is_vision_available
  from ...test_configuration_common import ConfigTester
  from ...test_modeling_common import ModelTesterMixin, floats_tensor, ids_tensor, random_attention_mask
label_desc: Use image node_id 18 for calling the PerceiverModelTest obj's underlying member method code with example usage: obj.test_save_load() without return types