keras中双向LSTM流程的验证

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keras中双向LSTM流程的验证相关的知识,希望对你有一定的参考价值。

参考技术A   在keras中,双向循环神经网络,无论是普通的RNN还是LSTM还是GRU,都没有直接定义的层函数。需要另外先导入一个双向结构Bidirectional,并且不能直接从keras.layers导入,直接导入会报错(说起来都是辛酸泪),正确的导入方法如下:

其中参数layer就是RNN的类型,可以使简单的SimpleRNN , LSTM , 或者是GRU等等。merge_mode = ‘ concat’表示最后前向的输出和后向输出的连接方式,concat表示直接连接,类似于列表直接加上去的那种。

  和普通LSTM的输入类似,input还是为【batch_size,time_step,num】其中num表示单个时间点上向量的长度,此处搭建的双向LSTM模型的隐藏层的向量维度为5,输入的向量维度为4,每一个时间点都返回一个维度为【batch_size,5】的结果,最后的输出的连接方式为直接像列表那样堆叠。其中400个参数怎么来的:
  前向循环过程中,输入层和循环层之间之间的权重 其维度为 ,因为这里集成了单个LSTM的3个门控结构和一个输入单元状态的权重,在前向计算的时候,每个时间点的权重是复用的,即不同时间点输入和循环层的权重都是一样的(但前向和后向计算时权重不能复用),具体解释详见: keras中LSTM流程的验证 ,前向计算过程中,循环成之间的权重 ,其权重维度为 ,因为隐藏层的向量维度为5,所以,权重为5*20,其也是将3个门控结构和单元状态都集成在了一个权重参数中,最后加上偏置 ,也是集成了3个门控结构和输入单元状态的参数。
  反向循环过程中,输入层和反向循环层之间的权重 ,其维度和前向循环的维度一样,都为 ,反向循环层之间的权重和前向循环层维度一样 【这里说的只是维度,但数据不同,反向循环不能复用前向循环的参数】,偏置长度也为 。所以整个参数的个数为: 。

前向计算结果一致

结果一致,整个双向LSTM验证通过,存储和计算的流程验证和我想象中的一样。

以上是关于keras中双向LSTM流程的验证的主要内容,如果未能解决你的问题,请参考以下文章

Keras 中具有批量标准化的双向 LSTM

keras。初始化双向LSTM。传递单词嵌入

如何在 keras 中使用 Conv1D 和双向 LSTM 对每个时间步进行多类分类?

keras实例学习-双向LSTM进行imdb情感分类

Keras 中的 Seq2Seq 双向编码器解码器

Keras之RNN和LSTM