我有一个长度为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输入其他内容?
由于
答案 0 :(得分:15)
你的直觉是正确的;你需要的(以及你所描述的)是一个嵌入,用于将输入向量转换为LSTM输入的维度。我知道有三种主要方法可以实现这一目标。
W
和偏向量b
手动执行此操作。linear()
函数from TensorFlow's rnn_cell.py library自动创建权重矩阵和偏向量。然后,当您通过rnn_decoder()
函数in Tensorflow's seq2seq.py library或其他方式创建LSTM时,将该线性图层的输出作为LSTM的输入传递。embedding_rnn_decoder()
函数创建LSTM,自动将其连接到LSTM的输入。 (如果您在没有任何可选参数的情况下浏览此函数的代码,您将看到它只是为输入和LSTM创建一个线性嵌入层并将它们连接在一起。)除非您需要访问由于某种原因而创建的各个组件,否则我建议您使用第三个选项将代码保持在较高级别。