【发布时间】:2018-10-02 01:47:07
【问题描述】:
在正弦波上训练 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)
【问题讨论】:
-
好问题!你试过多层 LSTM 吗?也就是说,一个 LSTM RNN 的输出馈送到另一个 LSTM(第二层)的输入,以此类推 3 或 4 层,直到最后一层输出到损失函数。这是一种常见的架构,可以提高准确性,并且可能会在这种情况下有所作为。
-
我正在使用具有双向 LSTM 的多层。完整模型在上面
标签: python tensorflow neural-network keras lstm