首页 文章

Tensorflow展开的LSTM比输入序列长

提问于
浏览
1

我想在tensorflow中创建一个LSTM来预测时间序列数据 . 我的训练数据是一组不同长度的输入/输出序列 . 我可以在同一个培训批次中包含多个不同长度的序列吗?或者我需要将它们填充到相同的长度?如果是这样,怎么样?

另外:如果展开的RNN长于输入序列,张量流会做什么? rnn() 方法包含一个可选的 sequence_length 参数,该参数似乎是为处理这种可能性而设计的,但我不清楚它的作用 .

2 回答

  • 0

    你想从头开始构建模型吗?否则,您可能需要查看translate.py模型 . 在这里你的问题由以下几点处理: - 用PAD符号填充输入(和输出)序列(基本上是中性的“无信息” - 符号) - 桶:对于不同的长度组,你可以创建不同的桶(有意义)只有当你的序列长度从最短到最长时才是非常不同的

  • 0

    您不必将相同长度的输入/输出序列批量批量处理 . TF有一种指定输入大小的方法 . 参数“sequence_length”控制单元格展开的时间步数 . 因此TF将仅将您的单元格展开到sequence_length,而不是步长 .

    因此,在输入和输出的同时,也会提供包含每个输入长度的sequence_length数组

    tf.nn.bidirectional_rnn(fwd_stacked_lstm_cells, bwd_stacked_lstm_cells, 
                              reshaped_inputs,                                                                                 
                              sequence_length=sequence_length)
    

    .....

    feed_dict={
        model.inputs: x,
        model.targets: y,
        model.sequence_length: lengths})
    

    哪里

    • len(length)== batch_size和

    • 对于所有i,length [i] ==输入x [i]的长度(与outpu y [i]的长度相同)

相关问题