Esempio n. 1
0
    def _build_tf_pred_graph(
            self, session_data: "train_utils.SessionData") -> "tf.Tensor":
        self.a_in = tf.placeholder(tf.float32,
                                   (None, session_data.X.shape[-1]),
                                   name="a")
        self.b_in = tf.placeholder(tf.float32,
                                   (None, None, session_data.Y.shape[-1]),
                                   name="b")

        self.message_embed = self._create_tf_embed_fnn(
            self.a_in,
            self.hidden_layer_sizes["a"],
            fnn_name="a_b" if self.share_hidden_layers else "a",
            embed_name="a",
        )

        self.sim_all = train_utils.tf_raw_sim(
            self.message_embed[:, tf.newaxis, :],
            self.all_labels_embed[tf.newaxis, :, :],
            None,
        )

        self.label_embed = self._create_tf_embed_fnn(
            self.b_in,
            self.hidden_layer_sizes["b"],
            fnn_name="a_b" if self.share_hidden_layers else "b",
            embed_name="b",
        )

        self.sim = train_utils.tf_raw_sim(self.message_embed[:, tf.newaxis, :],
                                          self.label_embed, None)

        return train_utils.confidence_from_sim(self.sim_all,
                                               self.similarity_type)
Esempio n. 2
0
    def _build_tf_pred_graph(self,
                             session_data: "SessionDataType") -> "tf.Tensor":

        shapes, types = train_utils.get_shapes_types(session_data)

        batch_placeholder = []
        for s, t in zip(shapes, types):
            batch_placeholder.append(tf.placeholder(t, s))

        self.batch_in = tf.tuple(batch_placeholder)

        batch_data, self.batch_tuple_sizes = train_utils.batch_to_session_data(
            self.batch_in, session_data)

        a = self._combine_sparse_dense_features(batch_data["text_features"],
                                                batch_data["text_mask"][0],
                                                "text")
        b = self._combine_sparse_dense_features(batch_data["label_features"],
                                                batch_data["label_mask"][0],
                                                "label")

        self.all_labels_embed = tf.constant(
            self.session.run(self.all_labels_embed))

        self.message_embed = self._create_tf_embed_fnn(
            a,
            self.hidden_layer_sizes["text"],
            fnn_name="text_label" if self.share_hidden_layers else "text",
            embed_name="text",
        )

        self.sim_all = train_utils.tf_raw_sim(
            self.message_embed[:, tf.newaxis, :],
            self.all_labels_embed[tf.newaxis, :, :],
            None,
        )

        self.label_embed = self._create_tf_embed_fnn(
            b,
            self.hidden_layer_sizes["label"],
            fnn_name="text_label" if self.share_hidden_layers else "label",
            embed_name="label",
        )

        self.sim = train_utils.tf_raw_sim(self.message_embed[:, tf.newaxis, :],
                                          self.label_embed, None)

        return train_utils.confidence_from_sim(self.sim_all,
                                               self.similarity_type)
Esempio n. 3
0
    def _build_tf_pred_graph(
            self, session_data: "train_utils.SessionDataType") -> "tf.Tensor":
        """Rebuild tf graph for prediction."""

        self._create_tf_placeholders(session_data)

        self.dial_embed, mask = self._create_tf_dial(self.a_in)

        self.sim_all = train_utils.tf_raw_sim(
            self.dial_embed[:, :, tf.newaxis, :],
            self.all_bot_embed[tf.newaxis, tf.newaxis, :, :],
            mask,
        )

        self.bot_embed = self._create_tf_bot_embed(self.b_in)

        self.sim = train_utils.tf_raw_sim(self.dial_embed[:, :, tf.newaxis, :],
                                          self.bot_embed, mask)

        return train_utils.confidence_from_sim(self.sim_all,
                                               self.similarity_type)