'Create the decoding layers for reconstruction finetuning.
:return: output of the final encoding layer.'

def _create_decoding_layers(self):

    next_decode = self.encode
    for (l, layer) in reversed(list(enumerate(self.layers))):
        with tf.name_scope('decode-{}'.format(l)):
            if self.tied_weights:
                dec_w = tf.transpose(self.encoding_w_[l])
            else:
                dec_w = tf.Variable(tf.transpose(self.encoding_w_[l].initialized_value()))
            dec_b = tf.Variable(tf.constant(0.1, shape=[dec_w.get_shape().dims[1].value]))
            self.decoding_w.append(dec_w)
            self.decoding_b.append(dec_b)
            y_act = tf.add(tf.matmul(next_decode, dec_w), dec_b)
            if (self.finetune_dec_act_func[l] is not None):
                layer_y = self.finetune_dec_act_func[l](y_act)
            else:
                layer_y = None
            next_decode = tf.nn.dropout(layer_y, self.keep_prob)
        self.layer_nodes.append(next_decode)
    self.reconstruction = next_decode
