Tensorflow中可变长度序列的双向LSTM

时间:2017-03-21 19:41:27

标签: tensorflow lstm bidirectional

我想训练张量流中的双向LSTM来执行序列分类问题(情感分类)。

因为序列长度可变,所以批次通常用零向量填充。通常,我在单向RNN中使用sequence_length参数来避免对填充向量进行训练。

如何使用双向LSTM进行管理。是" sequence_length"参数工作是否自动从顺序中的高级位置开始向后移动?

谢谢

2 个答案:

答案 0 :(得分:2)

bidirectional_dynamic_rnn还有一个sequence_length参数,用于处理可变长度的序列。

https://www.tensorflow.org/api_docs/python/tf/nn/bidirectional_dynamic_rnnmirror):

  

sequence_length:一个int32 / int64向量,大小为[batch_size],包含每个序列的实际长度。

您可以在此处查看示例:https://github.com/Franck-Dernoncourt/NeuroNER/blob/master/src/entity_lstm.py

答案 1 :(得分:0)

在正向传递中,rnn单元将在sequence_length处停止,tf.nn.bidirectional_dynamic_rnn是输入的无填充长度,并且是tf.reverse_sequence中的参数。在向后传递中,它首先使用函数sequence_length反转前batch_axis个元素,然后像在向前传递中那样遍历。

https://tensorflow.google.cn/api_docs/python/tf/reverse_sequence

  

此op首先对沿维度i的输入进行切片,对于每个切片seq_lengths[i],将对沿维度seq_axis的前lists:zip元素进行反转。