[在Keras中为LSTM创建张量时,时间序列输入似乎效率很低。还有另一种方法吗?例如,在转换为张量之前,一个序列可能是:
依此类推,因为我的系列中有很多数字。在这种情况下,每个样本只有8个时间步长,但本质上我仍然创建的数据量是将其发送到LSTM之前的原始数据的8倍-绝大多数数据都是冗余的。对于具有50个时间步长的系列,我将创建大约50倍的原始数据。这似乎效率很低。当所有数据仅来自一个长序列时,是否有更有效的方法将该数据加载到LSTM中? tf.data是否提供我忽略的任何此类功能?
没有,但是您可以尝试使用return_sequences=True
(此模型也将支持Conv1D
,但不支持Flatten
或池)。
然后您可以使用移位的输出:
[1, 2, 3, 4, 5, 6, 7, 8]
的输入[2,3,4,5,6,7,8,9]
[a, b, c, d, e, f, g, h]
的输入[b,c,d,e,f,g,h,i]
基本上:
x_train = original_sequences[:, :-1]
y_train = original_sequences[:, 1: ]
后果是:
Bidirectional
,因为结果将受到将来值的影响。 (在同一行上,卷积应使用'causal'
填充,否则将来的值也会影响结果)。