keras中的多对多RNN - 预测每第n个输入的输出

问题描述 投票:0回答:1

我正在试图弄清楚如何使用LSTM / GRU来构建一个模型,该模型可以预测多对多但是每个n(在我的情况下为7)输入。例如,我的输入数据每天都有一整天的时间步长,但我只想在每周末而不是每天预测输出。

我能找到的唯一信息是这个答案:Many to one and many to many LSTM examples in Keras

它说:“当输入/输出长度与步数不同时,多对多:在Keras中这很难实现。没有简单的代码片段来编码。”

在pytorch中,似乎你可以在loss函数中设置ignore_index,我认为应该这样做。

keras有解决方案吗?

keras neural-network deep-learning
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.