Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何建立层序预测的lstm模型_Python_Keras_Deep Learning_Sequence_Lstm - Fatal编程技术网

Python 如何建立层序预测的lstm模型

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天的序列,并预测接下来的三个序

我每分钟记录下机器发出的信号,持续6小时。i、 e.机器信号的长度为6*60=
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))
])