code: def save(self, stats=None):
      super(Base, self).save(stats)
  
      with timer("save weights"):
          # Only save weights, because saving named layers that have shared
          # weights causes an error on reload
          self.estimator.keras.save_weights(self.weights_path())
  
      # Patch for keras 2 models saved with optimizer weights:
      # https://github.com/gagnonlg/explore-ml/commit/c05b01076c7eb99dae6a480a05ac14765ef08e4b
      with h5py.File(self.weights_path(), "a") as f:
          if "optimizer_weights" in f.keys():
              del f["optimizer_weights"]
  
imports: import os
  from os.path import join, dirname
  import logging
  import botocore
  import lore
  from lore.util import timer
  from lore.env import require
  import h5py
label_desc: Use image node_id 9 for calling the Base obj's underlying member method code with example usage: obj.save(stats) without return types