code: 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)):
  
                  # Create decoding variables
                  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
  
                  # the input to the next layer is the output of this layer
                  next_decode = tf.nn.dropout(layer_y, self.keep_prob)
  
              self.layer_nodes.append(next_decode)
  
          self.reconstruction = next_decode
docs: Create the decoding layers for reconstruction finetuning.
  
          :return: output of the final encoding layer.