热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

深度学习库中不同LSTM实现的效率对比

论文链接是https:arxiv.orgpdf1806.01818.pdf,这篇文章给出了多个深度学习库中LSTM实现的性能对比,对工作和学习中要使用RNN的人员有一定参考意义。不

论文链接是https://arxiv.org/pdf/1806.01818.pdf,这篇文章给出了多个深度学习库中LSTM实现的性能对比,对工作和学习中要使用RNN的人员有一定参考意义。不足的是没有考虑效果的对比。这里做个简单记录。

一、各实现简介

文中对比的深度学习框架包括PyTorch、TensorFlow、Lasagne和Keras对比。针对LSTM结构来说,可以考虑一些优化方式,比如增加并行度,单步操作的融合等,但是这样做的缺点是想要改进内部结构的话就偏难,不够灵活。 深度学习框架一般提供多个LSTM的实现,区别在于训练速度和灵活性。LSTM实现包括cuDNN LSTM、fused LSTM变式和优化较少但更灵活的LSTM基础实现。例如TensorFlow中提供了5种LSTM变式,分别是BasicLSTMCell、LSTMCell、LSTMBlockCell、LSTMBlockFusedCell和cuDNNLSTM。

下图中给出了参与比较的LSTM实现以及细节信息。

《深度学习库中不同LSTM实现的效率对比》
《深度学习库中不同LSTM实现的效率对比》

二、实验结果分析

下图是在定长数据集上单层单向lstm的效率对比。

《深度学习库中不同LSTM实现的效率对比》
《深度学习库中不同LSTM实现的效率对比》

  • 最快的LSTM实现:cuDNNLSTM是所有输入数据和实验设置下最快的LSTM实现。TensorFlow cuDNNLSTM要比最慢的实现(Keras/TensorFlow LSTM)快7.2x。Pytorch、TensorFlow和Keras提供了cuDNN LSTM实现的wrapper,三者速度差异较小。
  • 优化的LSTM实现:除了cuDNNLSTM,TensorFlow中的LSTMBlockFusedCell是最快的变式,要比Pytorch LSTMCell-fused快1.3x,比TensorFlow LSTMBlockCell快3.4x。

下图是变长数据集上4层双向LSTM实验的效率对比。这里有些LSTM实现没有加入,这是由于接口实现不支持,比如TensorFlow cuDNNLSTM没法处理变长数据。

《深度学习库中不同LSTM实现的效率对比》
《深度学习库中不同LSTM实现的效率对比》


推荐阅读
author-avatar
mobiledu2502902687
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有