我正在尝试弄清楚如何使用LSTM / GRU构建模型,该模型可以预测很多(但每n个(在我的情况下为7个)输入)。例如,我的输入数据有整整一年的每一天的时间步长,但我只想预测每个星期末而不是每天的输出。
我唯一能找到的信息就是这个答案: Many to one and many to many LSTM examples in Keras
它说: “步骤数与输入/输出长度不同时,很多对很多:在Keras中这很怪异。没有简单的代码片段可以对此进行编码。”
在pytorch中,您似乎可以在loss函数中设置ignore_index,我认为应该可以解决问题。
喀拉拉邦有解决方案吗?
答案 0 :(得分:0)
我想我找到了答案。由于我试图预测第n个值,因此我们可以保留我们试图预测的LSTM层的输出,并除去其余的值。我创建了一个lambda层来做到这一点-它仅从lstm输出中读取第7个值。 这是代码:
X = np.random.normal(0,1,size=(100,365,5))
y = np.random.randint(2,size=(100,52,1))
model = Sequential()
model.add(LSTM(1, input_shape=(365, 5), return_sequences=True))
model.add(Lambda(lambda x: x[:, 6::7, :]))
model.add(TimeDistributed(Dense(1,activation='sigmoid')))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X,y,epochs=3,verbose=1)