我有两个时间序列A和B:
A: 1,2,3,1,2,3,3,3,1,2,3,3,3
B: 0,0,1,0,0,1,1,1,0,0,1,1,1
这个简单的训练集说信号B与A相关。事实上,每次A等于3,同时在B中,B值为1.
我介绍上面的例子只是为了解释我的问题。当我使用Keras使用LSTM来预测数据时,我希望模型能够从系列中理解这种依赖关系。
现在我使用这个配置:
model.add(keras.layers.LSTM(hidden_nodes, activation='sigmoid', input_dim=num_features, input_length=window, consume_less="mem"))
model.add(keras.layers.Dense(num_features, activation='sigmoid'))
optimizer = keras.optimizers.SGD(lr=learning_rate, decay=1e-6, momentum=0.9, nesterov=True)
但是我看到LSTM预测的价值在时间序列之间没有明显的使用依赖性。如果我使用5的窗口进行预测,以便预测下一个点:
A: [1,2,3,1,2]
B: [0,0,1,0,0]
我希望LSTM给出A值3和B值1,因为下面的训练集说明了这一点。
问题是我的网似乎使用信号而没有给出正确的权重信号依赖性。
答案 0 :(得分:1)
你应该只有一个系列有两个功能。
如果A和B是列表(不是numpy数组):
fullSeq = np.array(A + B)
#this shape is (lenA + lenB,)
fullSeq = fullSeq.reshape((2,len(A)))
fullSeq = fullSeq.swapaxes(0,1).reshape((1,len(A),2))
#make sure that the resulting array is something like [[[1,0],[2,0],[3,1],...]]
现在您有一个num_features=2
的序列。 A和B现在完全依赖。