代码之家  ›  专栏  ›  技术社区  ›  rekkit

正向传播缓慢-训练时间正常

  •  1
  • rekkit  · 技术社区  · 7 年前

    我很难弄清楚为什么在执行前向传播时,我的代码速度非常慢。相关代码可在此处找到: https://github.com/rekkit/lazy_programmer_ml_course/blob/develop/05_unsupervised_deep_learning/poetry_generator_rnn.py

    我将我的代码的性能与此进行比较: https://github.com/lazyprogrammer/machine_learning_examples/blob/master/rnn_class/srn_language_tf.py

    区别在于我跑步的时候

    self.session.run(self.predict(x_batch), feed_dict={...})
    

    或者当我跑步的时候

    self.returnPrediction(x_batch)
    

    运行大约需要0.14秒。这听起来可能不像一场灾难,但每句话只有0.14秒(我正在做一个RNN来预测句子中的下一个单词)。因为共有1436个句子,所以我们要看的是每个时代大约3分20秒。如果我想训练10个时代,那就需要半个小时。比其他代码需要的更多。

    有人知道问题出在哪里吗?我能看到的唯一区别是,我已经将代码模块化了。

    提前谢谢你的帮助。

    1 回复  |  直到 7 年前
        1
  •  3
  •   rekkit    7 年前

    我已经弄明白了。每次调用预测方法时,我都在重建图形。相反,在fit方法中,我定义了一个变量:

    preds = self.predict(self.tfX)
    

    然后每次我需要预测,而不是使用:

    predictions = self.session.run(self.predict(x_batch), feed_dict={...})
    

    我使用:

    predictions = self.session.run(self.preds, feed_dict={...})