def __init__( self, name: Text, config: Dict[Text, Any], data_signature: Dict[Text, Dict[Text, List[FeatureSignature]]], label_data: RasaModelData, ) -> None: super().__init__( name=name, random_seed=config[RANDOM_SEED], tensorboard_log_dir=config[TENSORBOARD_LOG_DIR], tensorboard_log_level=config[TENSORBOARD_LOG_LEVEL], checkpoint_model=config[CHECKPOINT_MODEL], ) self.config = config self.data_signature = data_signature self.label_signature = label_data.get_signature() self._check_data() label_batch = label_data.prepare_batch() self.tf_label_data = self.batch_to_model_data_format( label_batch, self.label_signature) # set up tf layers self._tf_layers: Dict[Text, tf.keras.layers.Layer] = {}
def predict(self, predict_data: RasaModelData) -> Dict[Text, tf.Tensor]: if self._predict_function is None: logger.debug("There is no tensorflow prediction graph.") self.build_for_predict(predict_data) # Prepare a single batch of the size of the input batch_in = predict_data.prepare_batch() self._training = False # needed for eager mode return self._predict_function(batch_in)
def __init__( self, data_signature: Dict[Text, List[FeatureSignature]], config: Dict[Text, Any], max_history_tracker_featurizer_used: bool, label_data: RasaModelData, ) -> None: super().__init__( name="TED", random_seed=config[RANDOM_SEED], tensorboard_log_dir=config[TENSORBOARD_LOG_DIR], tensorboard_log_level=config[TENSORBOARD_LOG_LEVEL], ) self.config = config self.max_history_tracker_featurizer_used = max_history_tracker_featurizer_used # data self.data_signature = data_signature self._check_data() self.predict_data_signature = { feature_name: features for feature_name, features in data_signature.items() if DIALOGUE in feature_name } # optimizer self.optimizer = tf.keras.optimizers.Adam() self.all_labels_embed = None label_batch = label_data.prepare_batch() self.tf_label_data = self.batch_to_model_data_format( label_batch, label_data.get_signature() ) # metrics self.action_loss = tf.keras.metrics.Mean(name="loss") self.action_acc = tf.keras.metrics.Mean(name="acc") self.metrics_to_log += ["loss", "acc"] # set up tf layers self._tf_layers: Dict[Text : tf.keras.layers.Layer] = {} self._prepare_layers()
def __init__( self, data_signature: Dict[Text, List[FeatureSignature]], label_data: RasaModelData, index_label_id_mapping: Optional[Dict[int, Text]], index_tag_id_mapping: Optional[Dict[int, Text]], config: Dict[Text, Any], ) -> None: super().__init__( name="CRFTransformer", random_seed=config[RANDOM_SEED], tensorboard_log_dir=config[TENSORBOARD_LOG_DIR], tensorboard_log_level=config[TENSORBOARD_LOG_LEVEL], ) self.config = config self.data_signature = data_signature self._check_data() self.predict_data_signature = { feature_name: features for feature_name, features in data_signature.items() if TEXT in feature_name } label_batch = label_data.prepare_batch() self.tf_label_data = self.batch_to_model_data_format( label_batch, label_data.get_signature()) self._num_intents = len(index_label_id_mapping ) if index_label_id_mapping is not None else 0 self._num_tags = len( index_tag_id_mapping) if index_tag_id_mapping is not None else 0 # tf objects, training self._prepare_layers() self._set_optimizer(tf.keras.optimizers.Adam(config[LEARNING_RATE])) self._create_metrics() self._update_metrics_to_log()