如何逻辑构造顺序数据以训练LSTM rnn

时间:2019-06-17 09:12:28

标签: tensorflow lstm

我以前使用过传统的神经网络,但是对于tensorflow和LSTM都是新手,所以请耐心等待。

数据依次包含约1.5亿行。每行具有9个(规范化的)浮点特征和两个离散的特征(整数)。列的结构如下

f0, f1, f2, f3, f4, f5, f6, f7, f8, i0, i1

还有其他表的键,但与LSTM网络无关。

我想应该将整数特征发送到字典,但是现在,为了简单起见,我只在与第i个索引相对应的位置处各处零位置扩展了零行的数据行(应该具有效果一样吗?)

                                   |--          i0'th  -|-          i1'th   |
f0, f1, f2, f3, f4, f5, f6, f7, f8, 0, 0, 0, ... 1, 0, 0, 0, 0, .. , 1, 0, 0

所以现在每个输入行都有 n_input 个浮点值(但大多数为零)已知 i0 i1 可以取值的范围,因此 n_input 的大小是固定的(总共99个)。

对于其中的每一行,还有一组 n_predict (实际上是八个)值(介于零和一个之间的值)我们要预测

p0, p1, p2, p3, p4, p5, p6, p7

所有这些都驻留在sql数据库中,并且我使用pandas和pyodbc直接连接到它。它是按顺序排序的,因此我们可以基于该顺序快速地批量提取。我做了一个“提取下一批”功能,可以查询数据并返回np.arrays

我正在尝试将两个BasicLSTMCell设置为一个MultiLSTMCell,并且已经设置了提取批处理以返回以下数组

input_data, of shape: (n_batch, n_sequence, n_input)
predict_data, of shape: (n_batch, n_sequence, n_predict)

这是构造数据的正确方法吗?据我了解,RNN应该需要( n_sequence n_input )作为输入并使用每批并行训练?而且我还认为,数据中的底层连接越远, n_sequence 应该越大?

现在我已经将 n_batch 设置为128,将 n_sequence 设置为100(任意),但是我似乎无法运行tensorflow代码。在运行之前,我可能会四处弄弄,但我怀疑尝试使用网络时可能存在一些潜在问题。我看了几个示例,但它们通常只有一个输入,而解决方案是“预测下一个序列”类型或某种分类。这似乎与我们这里的不一样?有什么想法吗?

0 个答案:

没有答案