SRU
SRU(Simple Recurrent Unit)是近期一个新提出来的类似LSTM和GRU的处理单元结构。
论文:https://arxiv.org/abs/1709.02755
官方代码:https://github.com/taolei87/sru
本文代码:https://github.com/xylcbd/tensorflow_mnist_sru
LSTM vs SRU
依据论文解释,与LSTM相比,SRU具有最大的优势在于其运算速度。
SRU主要将最耗时的时间维上的矩阵乘法运算变成了Hadamard乘积运算(即element-wise product),因此速度极具优势,速度快10倍以上。
SRU for mnist
sru.py
1 | #coding: utf-8 |
train.py
1 | #coding: utf-8 |
运行:
1 | python train.py sru |
或则会
1 | python train.py lstm |
结果日志:
1 | -------------- |
总结
目前测试下来SRU确实比LSTM快很多(当然,这段mnist的代码体现不出优势,因为并没有重构整个RNN网络)。但是相比LSTM,SRU可能收敛更慢一点,精度也些逊一点。如果非常在意速度的话,可以考虑使用SRU网络替换LSTM网络。