我有一个长度为t(x0,…,xt)的时间序列,每个xi是d维向量,即xi =(x0i,x1i,xdi).因此,我的输入X是[batch_size,d]
张量流LSTM的输入应为[batchSize,hidden_size]大小.
我的问题是我应该如何输入我的时间序列给LSTM.我想到的一个可能的解决方案是具有大小[d,hidden_size]的额外的权重矩阵W,并且使用X * W B输入LSTM.
这是正确的还是应该输入网络?
谢谢
解决方法
你的直觉是正确的您需要什么(以及您所描述的)是将输入向量转换为LSTM输入的维度的嵌入.我知道要做到这一点的三个主要方式.
>您可以使用额外的权重矩阵W和偏置向量b手动进行操作.
>您可以使用linear()函数from TensorFlow’s rnn_cell.py library自动创建权重矩阵和偏置向量.然后,通过rnn_decoder()函数in Tensorflow’s seq2seq.py library或其他方式创建LSTM时,将该线性层的输出作为LSTM的输入传递.
>或者您可以通过在同一seq2seq库的第141行的embedding_rnn_decoder()函数创建LSTM来创建此嵌入并将其挂接到LSTM的输入. (如果您浏览此函数的代码而没有任何可选参数,您将看到它只是为输入以及LSTM创建一个线性嵌入层,并将它们连接在一起).
除非您需要访问由于某些原因创建的各个组件,否则我建议使用第三个选项来保持代码的高度.