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