字符RNN在TensorFlow中的学习率初始化

我最近在重现http://karpathy.github.io/2015/05/21/rnn-effectiveness/中描述的字符RNN代码。已经有在TensorFlow中实现的代码,我参考的代码位于https://github.com/sherjilozair/char-rnn-tensorflow/blob/master/model.py。关于上述代码中的以下几行,我有一个问题:

    #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))

问题在#4:为什么我们将学习率设置为0?将学习率初始化为0是最好的方法吗?


回答:

查看代码,似乎在使用之前,学习率被设置为另一个值。

sess.run(tf.assign(model.lr, args.learning_rate * (args.decay_rate ** e)))

这是必要的,因为学习率会随着时间衰减,而Adam优化器只初始化一次。任何值都可以使用,但对我来说,零看起来最美观。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注