输入到LSTM网络张量流

时间:2016-01-28 08:59:48

标签: python tensorflow lstm recurrent-neural-network

我有一个长度为t(x0,...,xt)的时间序列,每个xi是一个d维向量,即xi =(x0i,x1i,...,xdi)。因此我的输入X的形状为[batch_size,d]

张量流LSTM的输入大小应为[batchSize,hidden_​​size]。 我的问题是我应该如何输入我的时间序列到LSTM。我想到的一个可能的解决方案是使用额外的权重矩阵W,大小为[d,hidden_​​size],并输入LSTM和X * W + B.

这是正确的还是我应该向netwoרk输入其他内容?

由于

1 个答案:

答案 0 :(得分:15)

你的直觉是正确的;你需要的(以及你所描述的)是一个嵌入,用于将输入向量转换为LSTM输入的维度。我知道有三种主要方法可以实现这一目标。

  • 如您所述,您可以使用其他权重矩阵W和偏向量b手动执行此操作。
  • 您可以使用linear()函数from TensorFlow's rnn_cell.py library自动创建权重矩阵和偏向量。然后,当您通过rnn_decoder()函数in Tensorflow's seq2seq.py library或其他方式创建LSTM时,将该线性图层的输出作为LSTM的输入传递。
  • 或者您可以让Tensorflow创建此嵌入并通过相同seq2seq库的第141行的embedding_rnn_decoder()函数创建LSTM,自动将其连接到LSTM的输入。 (如果您在没有任何可选参数的情况下浏览此函数的代码,您将看到它只是为输入和LSTM创建一个线性嵌入层并将它们连接在一起。)

除非您需要访问由于某种原因而创建的各个组件,否则我建议您使用第三个选项将代码保持在较高级别。