我尝试使用 GRU 和 LSTM 在 keras 上实现模型。两种实现的模型架构相同。正如我在许多博客文章中所读到的,与 LSTM 相比,GRU 的推理时间更快。但在我的情况下,GRU 并不快,事实上相对于 LSTMs 比较慢。任何人都可以找到原因。与 Keras 中的 GRU 有什么关系,还是我在任何地方都出错了。
非常感谢您的帮助...
提前致谢
我尝试使用 GRU 和 LSTM 在 keras 上实现模型。两种实现的模型架构相同。正如我在许多博客文章中所读到的,与 LSTM 相比,GRU 的推理时间更快。但在我的情况下,GRU 并不快,事实上相对于 LSTMs 比较慢。任何人都可以找到原因。与 Keras 中的 GRU 有什么关系,还是我在任何地方都出错了。
非常感谢您的帮助...
提前致谢
我会首先检查您使用的 LSTM 是 CuDNNLSTM 还是简单的 LSTM。前者是 GPU 加速的变体,运行速度比简单的 LSTM 快得多,尽管在这两种情况下训练都在 GPU 上运行。
是的,文件不会说谎;事实上,GRU 单元的计算量比 LSTM 单元要少。
确保不要将简单的 GRU 与 CuDNN-LSTM 进行比较。
要获得真正的基准,请确保将 LSTM 与 GRU 以及 CuDNNLSTM 与 CuDNNGRU 进行比较。
LSTM(Long Short Term Memory):LSTM 有三个门(输入、输出和遗忘门)
GRU(门控循环单元):GRU 有两个门(重置门和更新门)。
GRU 使用更少的训练参数,因此使用更少的内存,执行速度更快,训练速度比 LSTM 更快,而 LSTM 在使用更长序列的数据集上更准确。简而言之,如果序列很大或准确性非常关键,请选择 LSTM,而为了减少内存消耗和更快的操作,请选择 GRU。这完全取决于您的训练时间和准确性的权衡。
如果在您的情况下,两种架构都相同,则两种模型的批量大小可能存在问题。确保两个模型的批量大小和序列长度也相同。