在正弦波上训练LSTM很简单 . LSTM很容易理解如何预测未来数百次的波浪 .
然而,一旦我试图预测不同频率的正弦波,LSTM就变得非常无能 . 即使我尝试在不同频率的许多波浪上训练它,它也会忘记第一波学习下一波 . 我改变测试数据频率时LSTM失败的示例:
如何训练我的LSTM识别频率的概念并对任何正弦曲线起作用?
编辑:
我正在使用的模型:
inputs = Input(shape=(self.timesteps, self.features))
bd_seq = Bidirectional(LSTM(128, return_sequences=True,
kernel_regularizer='l2'),
merge_mode='sum')(inputs)
bd_sin = Bidirectional(LSTM(32, return_sequences=True,
kernel_regularizer='l2'),
merge_mode='sum')(bd_seq)
bd_1 = Bidirectional(LSTM(self.features, activation='linear'),
merge_mode='sum')(bd_seq)
bd_2 = Bidirectional(LSTM(self.features, activation='tanh'),
merge_mode='sum')(bd_sin)
output = Add()([bd_1, bd_2])
self.model = Model(inputs=inputs, outputs=output)
1 回答
这让我觉得......你在训练一个序列,然后是另一个序列,然后是另一个序列?
对于任何模型的任何问题,这自然会失败 .
您必须在同一批次中训练大量序列,或者,如果一次一个序列,则每个时期永远不会超过一次 .
帮助模型的可能技巧:
将频率添加为输入数据中的特征(对于所有步骤)(如果您将其视为输入)
使模型输出频率(如果您知道它作为输出)并在频率上训练它 .
您可以将识别频率的模型与读取这些频率的模型结合起来,以预测所需的输出