Python 教授LSTM不同频率的概念
在正弦波上训练LSTM非常简单。LSTM很容易理解如何预测未来数百个时间步的波浪 然而,一旦我试图让LSTM预测一个不同频率的正弦波,它就变得非常不合适了。即使我尝试在不同频率的许多波上训练它,它也会忘记第一个波来学习下一个波。当我更改测试数据的频率时,我的LSTM如何失败的示例: 如何训练我的LSTM识别频率的概念并处理任何正弦信号 编辑: 我正在使用的模型:Python 教授LSTM不同频率的概念,python,tensorflow,neural-network,keras,lstm,Python,Tensorflow,Neural Network,Keras,Lstm,在正弦波上训练LSTM非常简单。LSTM很容易理解如何预测未来数百个时间步的波浪 然而,一旦我试图让LSTM预测一个不同频率的正弦波,它就变得非常不合适了。即使我尝试在不同频率的许多波上训练它,它也会忘记第一个波来学习下一个波。当我更改测试数据的频率时,我的LSTM如何失败的示例: 如何训练我的LSTM识别频率的概念并处理任何正弦信号 编辑: 我正在使用的模型: inputs = Input(shape=(self.timesteps, self.features)) bd_seq = Bi
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)
“…它忘记了第一次浪潮而学习下一次…”
这让我觉得。。。你是在训练一个序列,然后是另一个序列,然后是另一个序列吗
当然,对于任何模型的任何问题,这都会失败
您必须在同一批中训练许多序列,或者,如果一次训练一个序列,则每个历元的训练次数不得超过一次
freqs = list_of_frequencies
sinusoids = []
for freq in freqs:
sinusoids.append(create_a_sinusoid(freq))
training_data = np.array(sinusoids).reshape((freqs,timesteps,features))
帮助模型的可能技巧:
- 在输入数据中添加频率作为特征(对于所有步骤)(如果您知道它是输入)
- 使模型输出频率(如果您知道它是输出),并对其进行频率培训李>
- 您可以将识别频率的模型与读取这些频率以预测所需输出的模型相结合