import tensorflow as tf

            c_emb = tf.nn.dropout(tf.nn.embedding_lookup(self.word_mat, self.c), 1.0 - self.dropout)
            q_emb = tf.nn.dropout(tf.nn.embedding_lookup(self.word_mat, self.q), 1.0 - self.dropout)

            c_emb = tf.concat([c_emb, ch_emb], axis=2)
            q_emb = tf.concat([q_emb, qh_emb], axis=2)

            self.c_emb = highway(c_emb, size=d, scope="highway", dropout=self.dropout, reuse=None)
            self.q_emb = highway(q_emb, size=d, scope="highway", dropout=self.dropout, reuse=True)

    def _encode(self):
        N, PL, QL, CL, d, dc, nh = self._params()
        if self.config.fix_pretrained_vector:
            dc = self.char_mat.get_shape()[-1]
        with tf.variable_scope("Embedding_Encoder_Layer"):
            self.c_embed_encoding = residual_block(self.c_emb,
                                                   num_blocks=1,
                                                   num_conv_layers=2,
                                                   kernel_size=7,
                                                   mask=self.c_mask,
                                                   num_filters=d,
                                                   num_heads=nh,
                                                   seq_len=self.c_len,
                                                   scope="Encoder_Residual_Block",
                                                   bias=False,
                                                   dropout=self.dropout)
            self.q_embed_encoding = residual_block(self.q_emb,
