code: def __init__(self, model_directory, manifest):
      self.manifest = manifest
  
      for mandatory_key in self._mandatory_properties:
          # TODO: consider if we can tell you the path of the faulty manifest here
          assert (
              mandatory_key in manifest.keys()
          ), "Mandatory property '{}' was not defined in json manifest.".format(
              mandatory_key
          )
      for key, value in manifest.items():
          setattr(self, key, value)
  
      model_path = manifest.get("model_path", "graph.pb")
      if model_path.startswith(
          "./"
      ):  # TODO: can we be less specific here?
          self.model_path = path.join(model_directory, model_path[2:])
      else:
          self.model_path = model_path
  
      layers_or_layer_names = manifest.get("layers")
      if len(layers_or_layer_names) > 0:
          if isinstance(layers_or_layer_names[0], str):
              self.layer_names = layers_or_layer_names
          elif isinstance(layers_or_layer_names[0], dict):
              self.layers = _layers_from_list_of_dicts(
                  self, layers_or_layer_names
              )
              self.layer_names = [layer.name for layer in self.layers]
  
      super().__init__()
  
imports: from __future__ import absolute_import, division, print_function
  from os import path
  import warnings
  import logging
  from itertools import chain
  import tensorflow
  import numpy
  from lucid.modelzoo import util
  from lucid.modelzoo.aligned_activations import get_aligned_activations
  from lucid.modelzoo.get_activations import get_activations
  from lucid.misc.io import load, save
  import lucid.misc.io.showing
label_desc: Use image node_id 1 to create a new FrozenGraphModel object from inherited base classes: SerializedModel with example: obj = FrozenGraphModel(model_directory, manifest)