我是靠谱客的博主 烂漫跳跳糖,最近开发中收集的这篇文章主要介绍五分钟帮你快速理解双向LSTM,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

为什么用双向 LSTM?

单向的 RNN,是根据前面的信息推出后面的,但有时候只看前面的词是不够的, 
例如,

我今天不舒服,我打算__一天。

只根据‘不舒服‘,可能推出我打算‘去医院‘,‘睡觉‘,‘请假‘等等,但如果加上后面的‘一天‘,能选择的范围就变小了,‘去医院‘这种就不能选了,而‘请假‘‘休息‘之类的被选择概率就会更大。

 

双向LSTM(Bi-directional LSTM)

有些时候预测可能需要由前面若干输入和后面若干输入共同决定,这样会更加准确。因此提出了双向循环神经网络,网络结构如下图。可以看到Forward层和Backward层共同连接着输出层,其中包含了6个共享权值w1-w6。

 

 

在Forward层从1时刻到t时刻正向计算一遍,得到并保存每个时刻向前隐含层的输出。在Backward层沿着时刻t到时刻1反向计算一遍,得到并保存每个时刻向后隐含层的输出。最后在每个时刻结合Forward层和Backward层的相应时刻输出的结果得到最终的输出,用数学表达式如下:

 

 

四、Keras实现LSTM和双向LSTM

Keras对循环神经网络的支持和封装在上一篇文章已经讲解了,在这里仅介绍两个模型的搭建,如有疑问请阅读keras系列的上一篇文章。

 

 

 

 

 

 

 

 

最后

以上就是烂漫跳跳糖为你收集整理的五分钟帮你快速理解双向LSTM的全部内容,希望文章能够帮你解决五分钟帮你快速理解双向LSTM所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部