code: def test_save_restore(self):
      import os
  
      self.model.fit_eval(
          data=(self.x_train, self.y_train),
          validation_data=(self.x_val, self.y_val),
          **self.config,
      )
      y_pred = self.model.predict(self.x_test)
      assert y_pred.shape == (
          self.x_test.shape[0],
          self.y_val.shape[-1],
      )
      dirname = Path("savedroot")
      dirname.mkdir(exist_ok=True)
      restored_model = MTNetKeras()
      ckpt = os.path.join(dirname, "mtnet.ckpt")
      self.model.save(checkpoint_file=ckpt)
      restored_model.restore(checkpoint_file=ckpt)
      predict_after = restored_model.predict(self.x_test)
      assert_array_almost_equal(
          y_pred, predict_after, decimal=2
      ), "Prediction values are not the same after restore: " "predict before is {}, and predict after is {}".format(
          y_pred, predict_after
      )
      restored_model.fit_eval((self.x_train, self.y_train), epochs=1)
      restored_model.evaluate(self.x_val, self.y_val)
      os.remove(ckpt)
  
file_path: BigDL/python/chronos/test/bigdl/chronos/model/tf2/test_mtnet_keras.py
imports: from pathlib import Path
  import shutil
  import pytest
  from unittest import TestCase
  from bigdl.chronos.data import TSDataset
  import pandas
  import numpy
  from numpy.testing import assert_array_almost_equal
  from ...None import op_tf2
  from bigdl.chronos.utils import LazyImport
label_desc: Use image node_id 4 for calling the TestMTNetKeras obj's underlying member method code with example usage: obj.test_save_restore() without return types