Python 如何建立层序预测的lstm模型
我每分钟记录下机器发出的信号,持续6小时。i、 e.机器信号的长度为6*60=Python 如何建立层序预测的lstm模型,python,keras,deep-learning,sequence,lstm,Python,Keras,Deep Learning,Sequence,Lstm,我每分钟记录下机器发出的信号,持续6小时。i、 e.机器信号的长度为6*60=360。我的客户已经为每台机器记录了一个月的这些信号。换句话说,每台机器在28天内有360个长度信号。我的数据集中有大约2000台机器的数据 如果您想了解我的数据集是什么样子的,我已经在下面简要介绍了它(注意:每天的每个信号都有360长,如问题中所述) 我的客户希望有一个模型可以预测未来3天每台机器的信号序列。i、 e.在第29天、第30天、第31天。换句话说,模型应该学习从第1天到第29天的序列,并预测接下来的三个序
360
。我的客户已经为每台机器记录了一个月的这些信号。换句话说,每台机器在28
天内有360个长度信号。我的数据集中有大约2000台机器的数据
如果您想了解我的数据集是什么样子的,我已经在下面简要介绍了它(注意:每天的每个信号都有360长,如问题中所述)
我的客户希望有一个模型可以预测未来3天每台机器的信号序列。i、 e.在第29天、第30天、第31天。换句话说,模型应该学习从第1天到第29天的序列,并预测接下来的三个序列
因此,我开始搜索深度学习模型,发现模型似乎适合我的问题
我目前的代码如下
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, RepeatVector, Dense, TimeDistributed
from tensorflow.keras.activations import elu
hidden_size = 50
seq2seq = Sequential([
LSTM(hidden_size, input_shape = (input_sequence_length, no_vars)),
RepeatVector(prediction_length),
LSTM(hidden_size, return_sequences = True),
Dense(hidden_size, activation = elu)
TimeDistributed(Dense(1, activation = elu))
])
然而,由于我在深度学习方面的知识有限,我不确定我所做的是正确的。此外,我没有第29天、第30天和第31天的数据。所以,我也想知道如何做培训部分?我在这个问题上太迟钝了,因为我不清楚该怎么做
如果需要,我很乐意提供更多细节
编辑:
看来LSTM是我问题的潜在模型,因为我没有第29天、第30天和第31天的训练数据。我想知道@ESDARII的过程是LSTM中的内置函数,还是我们必须从头开始在keras中编写它。请让我知道您的想法,如果您有任何其他建议。您的网络不应该是真正的seq2seq网络 我建议使用一个简单的RNN或LSTM,其工作原理如下: 它获取从1天到J-1天的所有信号,并预测第J天的信号,例如: 如果第一步,它获取第1天的信号并要求预测第2天的信号,然后在下一步中获取第1天、第2天的信号并要求预测第3天的信号,等等,那么当你到达第28天时,网络拥有28天之前的所有信号,并要求预测第29天的信号,等等
通过这种方式,您可以克服在第29天、第30天和第31天没有值这一事实。因为你的人际网络将非常擅长预测第J天的信号,给定截至第J-1天的信号。你的人际网络不应该是真正的seq2seq网络 我建议使用一个简单的RNN或LSTM,其工作原理如下: 它获取从1天到J-1天的所有信号,并预测第J天的信号,例如: 如果第一步,它获取第1天的信号并要求预测第2天的信号,然后在下一步中获取第1天、第2天的信号并要求预测第3天的信号,等等,那么当你到达第28天时,网络拥有28天之前的所有信号,并要求预测第29天的信号,等等
通过这种方式,您可以克服在第29天、第30天和第31天没有值这一事实。因为你的人际网络将非常擅长预测第J天的信号,给出截至第J-1天的信号。非常感谢你的回答。如果你能告诉我如何用python做一个,那就太好了。期待您的回复:)非常感谢您的回答。如果你能告诉我如何用python做一个,那就太好了。期待您的来信:)
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, RepeatVector, Dense, TimeDistributed
from tensorflow.keras.activations import elu
hidden_size = 50
seq2seq = Sequential([
LSTM(hidden_size, input_shape = (input_sequence_length, no_vars)),
RepeatVector(prediction_length),
LSTM(hidden_size, return_sequences = True),
Dense(hidden_size, activation = elu)
TimeDistributed(Dense(1, activation = elu))
])