首页 文章

教LSTMs不同频率的概念

提问于
浏览
3

在正弦波上训练LSTM很简单 . LSTM很容易理解如何预测未来数百次的波浪 .

然而,一旦我试图预测不同频率的正弦波,LSTM就变得非常无能 . 即使我尝试在不同频率的许多波浪上训练它,它也会忘记第一波学习下一波 . 我改变测试数据频率时LSTM失败的示例:

enter image description here

如何训练我的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 回答

  • 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))
    

    帮助模型的可能技巧:

    • 将频率添加为输入数据中的特征(对于所有步骤)(如果您将其视为输入)

    • 使模型输出频率(如果您知道它作为输出)并在频率上训练它 .

    • 您可以将识别频率的模型与读取这些频率的模型结合起来,以预测所需的输出

相关问题