python – 输入到LSTM网络张量流

我有一个长度为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创建一个线性嵌入层,并将它们连接在一起).

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

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...