code: def test_save_load(self):
      print("-" * 80)
      logger.info("test_save_load\n" + "-" * 80 + "\n")
      self.model.save(dirname=join(rootdir, "tmp", "vae"))
      loaded_model = VAE.load(dirname=join(rootdir, "tmp", "vae"))
  
      test_ts = TimeSeries.from_pd(self.test_df)
      set_random_seeds()
      scores = self.model.get_anomaly_score(test_ts)
      set_random_seeds()
      loaded_model_scores = loaded_model.get_anomaly_score(test_ts)
      self.assertSequenceEqual(list(scores), list(loaded_model_scores))
  
      set_random_seeds()
      alarms = self.model.get_anomaly_label(test_ts)
      set_random_seeds()
      loaded_model_alarms = loaded_model.get_anomaly_label(test_ts)
      self.assertSequenceEqual(list(alarms), list(loaded_model_alarms))
  
file_path: merlion/tests/anomaly/multivariate/test_vae.py
imports: import sys
  import logging
  import unittest
  import torch
  import random
  import numpy
  import pandas
  from os.path import abspath, dirname, join
  from merlion.utils import TimeSeries
  from ts_datasets.anomaly import *
  from merlion.models.anomaly.vae import VAE
label_desc: Use image node_id 3 for calling the TestVAE obj's underlying member method code with example usage: obj.test_save_load() without return types