【发布时间】:2020-04-08 02:47:50
【问题描述】:
我有 6 小时内每分钟从机器记录的信号。即机器的信号长度为 6*60 = 360。我的客户已经为每台机器记录了一个月的这些信号。换句话说,每台机器有28 天的 360 个长度信号。我的数据集中有大约 2000 台机器的数据。
如果您想了解我的数据集的外观,我在下面提到了它的快速概述(注意:每天的每个信号都是 360 长度,如问题中所述)。
machine_num, day1, day2, ..., day28
m1, [12, 10, 5, 6, ...], [78, 85, 32, 12, ...], ..., [12, 12, 12, 12, ...]
m2, [2, 0, 5, 6, ...], [8, 5, 32, 12, ...], ..., [1, 1, 12, 12, ...]
...
m2000, [1, 1, 5, 6, ...], [79, 86, 3, 1, ...], ..., [1, 1, 12, 12, ...]
我的客户期望有一个模型可以预测每台机器接下来 3 天的信号序列。即在第 29 天、第 30 天、第 31 天。换句话说,模型应该学习第 1 天到第 29 天的序列,并预测接下来的三个序列。
于是,我开始搜索深度学习模型,并找到了似乎适合我的问题的模型Seq2Seq。
我目前的代码如下。
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))
])
但是,由于我在深度学习方面的知识有限,我不确定我所做的是否正确。此外,我没有 day_29、day_30 和 day_31 的数据。所以,我也想知道如何做培训部分?我被这个问题困住了,因为我不知道如何继续。
如果需要,我很乐意提供更多详细信息。
编辑:
看起来 LSTM 是解决我的问题的潜在模型,因为我没有 day_29、day_30 和 day_31 的训练数据。我想知道@ESDARII 的过程是否是LSTM 中的内置函数,还是我们必须在keras 中从头开始编写它。如果您有任何其他建议,请告诉我您的想法。
【问题讨论】:
标签: python keras deep-learning sequence lstm