在正弦波上训练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)
答案 0 :(得分:1)
“......它忘记了第一波学习下一个......”
这让我觉得......你在训练一个序列,然后是另一个序列,然后是另一个序列?
对于任何模型的任何问题,自然会失败。
您必须在同一批次中训练大量序列,或者,如果一次一个序列,则每个时期永远不会超过一次。
freqs = list_of_frequencies
sinusoids = []
for freq in freqs:
sinusoids.append(create_a_sinusoid(freq))
training_data = np.array(sinusoids).reshape((freqs,timesteps,features))
帮助该模型的可能技巧: