【问题标题】:Which One is Faster either GRU or LSTMGRU 和 LSTM 哪个更快
【发布时间】:2020-05-12 22:29:56
【问题描述】:

我尝试使用 GRU 和 LSTM 在 keras 上实现模型。两种实现的模型架构相同。正如我在许多博客文章中所读到的,GRU 的推理时间比 LSTM 更快。但在我的情况下,GRU 并没有更快,实际上相对于 LSTM 来说更慢。任何人都可以找到原因。与 Keras 中的 GRU 有什么关系吗?还是我哪里出错了。

非常感谢您的帮助...

提前致谢

【问题讨论】:

  • 你能分享一个具体的例子来说明你如何实例化模型吗? GRU 理论上更快,但错误配置会产生相反的结果。您可以随时检查 keras 代码中的 RNN 层实现以更好地理解:github.com/keras-team/keras/blob/master/keras/layers/…
  • 配置错误实际上是什么意思。您能否以更详细的方式解释它。尽管我浏览了 keras 中的源代码,但我还没有理解这里出错的地方。

标签: machine-learning keras artificial-intelligence lstm gated-recurrent-unit


【解决方案1】:

LSTM (Long Short Term Memory):LSTM 有三个门(输入、输出和遗忘门)

GRU(门控循环单元):GRU 有两个门(重置门和更新门)。

GRU 使用更少的训练参数,因此使用的内存更少,执行速度更快,训练速度也比 LSTM 更快,而 LSTM 在使用更长序列的数据集上更准确。 简而言之,如果序列很大或准确性非常关键,请选择 LSTM,而为了减少内存消耗和更快的操作,请选择 GRU。这完全取决于您的训练时间和准确性的权衡。

如果在您的情况下两个架构相同,则两个模型的批量大小可能存在问题。确保两个模型的批量大小和序列长度也相同。

【讨论】:

    【解决方案2】:

    我会首先检查您使用的 LSTM 是 CuDNNLSTM 还是简单的 LSTM。前者是一种 GPU 加速的变体,运行速度比简单的 LSTM 快得多,尽管在这两种情况下训练都在 GPU 上运行。

    是的,文件不会说谎;事实上,GRU-cell 的计算量比 LSTM-cell 少。

    确保不要将简单 GRU 与 CuDNN-LSTM 进行比较。

    要获得真正的基准,请确保将 LSTM 与 GRU 以及 CuDNNLSTM 与 CuDNNGRU 进行比较。

    【讨论】:

    • 虽然我使用的是简单 LSTM 和 GRU(不是任何 cuda 变体),但与 LSTM 相比,GRU 的计算时间更慢。
    猜你喜欢
    • 2019-03-07
    • 1970-01-01
    • 2022-01-14
    • 2019-07-22
    • 2011-12-08
    • 1970-01-01
    • 2019-01-21
    • 2013-04-04
    相关资源
    最近更新 更多