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

Forward propagation slow - Training time normal

我无法弄清楚为什么当我执行前向传播时我的代码非常慢。有问题的代码可以在这里找到: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 个句子,我们正在查看每个 epoch 大约 3 分 20 秒。如果我想训练 10 个 epoch,那就是半小时。远远超过其他代码。

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

提前感谢您的帮助。

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

preds = self.predict(self.tfX)

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

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

我使用:

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