import tensorflow as tf


        # Concatenate the cell_output (= decoder state) and the context vector, and pass them through a linear layer
        # This is V[s_t, h*_t] + b in the paper
        with variable_scope.variable_scope("AttnOutputProjection"):
            output_t = linear([cell_output] + [context_t], options.gen_hidden_size, True)

        with tf.variable_scope('output_projection'):
            w = tf.get_variable('w', [options.gen_hidden_size, vocab.vocab_size+1], dtype=tf.float32)
            b = tf.get_variable('b', [vocab.vocab_size +1], dtype=tf.float32)
            # vocab_scores is the vocabulary distribution before applying softmax.
            # Each entry on the list corresponds to one decoder step
            vocab_score_t = tf.nn.xw_plus_b(output_t, w, b) # apply the linear layer
