输入到LSTM网络张量流

ofe*_*r-a 15 python lstm tensorflow 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]并且用X*W + B输入LSTM.

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

谢谢

Pen*_*der 15

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

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

除非您因某些原因需要访问您正在创建的各个组件,否则我建议您使用第三个选项来保持代码的高级别.