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)
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)
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)