为什么使用 LSTM 训练速度远大于 SimpleRNN?

在TensorFlow 2.x的Keras中,使用LSTM进行训练时发现其训练速度比SimpleRNN更快。尽管LSTM理论上计算更复杂,但原因在于TensorFlow 2.x的LSTM内部进行了优化。通过对比不同版本的SimpleRNN和LSTM的实现,发现在tensorflow.compat.v1.keras.layers.LSTM中找到了与旧版SimpleRNN性能相近的实现,验证了LSTM的训练时间确实增加。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        今天试验 TensorFlow 2.x , Keras 的 SimpleRNN 和 LSTM,发现同样的输入、同样的超参数设置、同样的参数规模,LSTM 的训练时长竟然远少于 SimpleRNN。

        模型定义:

 

 

        训练参数都这样传入:

        我们知道,LSTM 是修正了的 SimpleRNN(我随意想出来的词,“修正”),或者说,是在 SimpleRNN 基础之上又添加了别的措施使模型能考虑到超长序列的标记之间的依赖。 缓解了梯度消失和梯度爆炸的问题。

        所以,LSTM 比 SimpleRNN 是多了很多参数矩阵的,且每一步也多了一些计算。而训练过程既有前向,又有反向,不管哪个过程,理论上 LSTM都是比SimpleRNN要花更多时间的,那么为什么我在使用 TensorFlow with Keras 时会出现相反的情况呢?

        训练情况&#

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值