2016-07-28 11 views
0

Ich bin vor kurzem reproduzieren den Code für Char-RNN in http://karpathy.github.io/2015/05/21/rnn-effectiveness/ beschrieben. Es sind Codes bereits in Tensorflow implementiert und der Code, den ich beziehe, ist bei https://github.com/sherjilozair/char-rnn-tensorflow/blob/master/model.py.Lernrate Initialisierung Char-RNN in Tensorflow implementiert

#1 loss = seq2seq.sequence_loss_by_example([self.logits], 
      [tf.reshape(self.targets, [-1])], 
      [tf.ones([args.batch_size * args.seq_length])], 
      args.vocab_size) 
    #2 self.cost = tf.reduce_sum(loss)/args.batch_size/args.seq_length 
    #3 self.final_state = last_state 
    #4 self.lr = tf.Variable(0.0, trainable=False) 
    #5 tvars = tf.trainable_variables() 
    #6 grads, _ = tf.clip_by_global_norm(tf.gradients(self.cost, tvars), 
      args.grad_clip) 
    #7 optimizer = tf.train.AdamOptimizer(self.lr) 
    #8 self.train_op = optimizer.apply_gradients(zip(grads, tvars)) 

Die Frage ist, auf Platz # 4: Ich habe eine Frage in Bezug auf die folgenden Zeilen in dem oben genannten Code bekommt, warum wir die Lernrate als 0 setzen? Setzen Sie ihn auf 0, um die Lernrate am besten zu initialisieren?

Antwort

1

Beim Durchsehen des Codes sieht es so aus, als ob die Lernrate auf einen anderen Wert gesetzt wird, bevor sie überhaupt verwendet wird.

Dies ist notwendig, da die Lernrate im Laufe der Zeit abnimmt und der Adam Optimizer nur einmal initialisiert wird. Jeder Wert sollte funktionieren, aber null scheint mir ästhetisch am meisten zu gefallen.

Verwandte Themen