def load(cls, path: Text) -> "EmbeddingPolicy": """Loads a policy from the storage. **Needs to load its featurizer** """ if not os.path.exists(path): raise Exception("Failed to load dialogue model. Path '{}' " "doesn't exist".format(os.path.abspath(path))) featurizer = TrackerFeaturizer.load(path) file_name = "tensorflow_embedding.ckpt" checkpoint = os.path.join(path, file_name) if not os.path.exists(checkpoint + ".meta"): return cls(featurizer=featurizer) meta_file = os.path.join(path, "embedding_policy.json") meta = json.loads(rasa.utils.io.read_file(meta_file)) with open(os.path.join(path, file_name + ".tf_config.pkl"), "rb") as f: _tf_config = pickle.load(f) graph = tf.Graph() with graph.as_default(): session = tf.Session(config=_tf_config) saver = tf.train.import_meta_graph(checkpoint + ".meta") saver.restore(session, checkpoint) a_in = train_utils.load_tensor("user_placeholder") b_in = train_utils.load_tensor("bot_placeholder") sim_all = train_utils.load_tensor("similarity_all") pred_confidence = train_utils.load_tensor("pred_confidence") sim = train_utils.load_tensor("similarity") dial_embed = train_utils.load_tensor("dial_embed") bot_embed = train_utils.load_tensor("bot_embed") all_bot_embed = train_utils.load_tensor("all_bot_embed") attention_weights = train_utils.load_tensor("attention_weights") return cls( featurizer=featurizer, priority=meta.pop("priority"), graph=graph, session=session, user_placeholder=a_in, bot_placeholder=b_in, similarity_all=sim_all, pred_confidence=pred_confidence, similarity=sim, dial_embed=dial_embed, bot_embed=bot_embed, all_bot_embed=all_bot_embed, attention_weights=attention_weights, **meta, )
def load( cls, meta: Dict[Text, Any], model_dir: Text = None, model_metadata: "Metadata" = None, cached_component: Optional["EmbeddingIntentClassifier"] = None, **kwargs: Any, ) -> "EmbeddingIntentClassifier": if model_dir and meta.get("file"): file_name = meta.get("file") checkpoint = os.path.join(model_dir, file_name + ".ckpt") with open(os.path.join(model_dir, file_name + ".tf_config.pkl"), "rb") as f: _tf_config = pickle.load(f) graph = tf.Graph() with graph.as_default(): session = tf.compat.v1.Session(config=_tf_config) saver = tf.compat.v1.train.import_meta_graph(checkpoint + ".meta") saver.restore(session, checkpoint) a_in = train_utils.load_tensor("message_placeholder") b_in = train_utils.load_tensor("label_placeholder") sim_all = train_utils.load_tensor("similarity_all") pred_confidence = train_utils.load_tensor("pred_confidence") sim = train_utils.load_tensor("similarity") message_embed = train_utils.load_tensor("message_embed") label_embed = train_utils.load_tensor("label_embed") all_labels_embed = train_utils.load_tensor("all_labels_embed") with open( os.path.join(model_dir, file_name + ".inv_label_dict.pkl"), "rb" ) as f: inv_label_dict = pickle.load(f) return cls( component_config=meta, inverted_label_dict=inv_label_dict, session=session, graph=graph, message_placeholder=a_in, label_placeholder=b_in, similarity_all=sim_all, pred_confidence=pred_confidence, similarity=sim, message_embed=message_embed, label_embed=label_embed, all_labels_embed=all_labels_embed, ) else: warnings.warn( f"Failed to load nlu model. " f"Maybe path '{os.path.abspath(model_dir)}' doesn't exist." ) return cls(component_config=meta)