gpt4 book ai didi

python - 教授 LSTM 不同频率的概念

转载 作者:太空宇宙 更新时间:2023-11-03 11:40:42 25 4
gpt4 key购买 nike

在正弦波上训练 LSTM 非常简单。 LSTM 很容易理解如何预测 future 数百个时间步长的波浪。

但是,一旦我尝试让 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)

最佳答案

"...it forgets the first wave to learn the next one..."

这让我想……你是在训练一个序列,然后是另一个序列,然后是另一个序列?

对于任何模型的任何类型的问题,这自然会失败。

您必须在同一批处理中训练大量序列,或者,如果一次训练一个序列,则每个时期不得超过一次。

freqs = list_of_frequencies
sinusoids = []
for freq in freqs:
sinusoids.append(create_a_sinusoid(freq))

training_data = np.array(sinusoids).reshape((freqs,timesteps,features))

可能有助于模型的技巧:

  • 将频率作为特征(对于所有步骤)添加到输入数据中(如果您知道它是输入的话)
  • 让模型输出频率(如果您知道它是输出)并根据频率对其进行训练。
  • 您可以将识别频率的模型与读取这些频率以预测所需输出的模型结合起来

关于python - 教授 LSTM 不同频率的概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49956945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com