以每小时时间序列为inpu的LSTM预测日值

2024-06-10 11:32:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在培训单层LSTM,其编码如下:

model = keras.Sequential()

model.add(keras.layers.LSTM(units=64,
                            input_shape=(X_train.shape[1], X_train.shape[2])))

model.add(keras.layers.Dense(units=1,  activation='sigmoid'))

model.compile(
  loss='binary_crossentropy',
  optimizer = keras.optimizers.Adam(lr=0.0001),
  metrics=['acc']
)

我的LSTM的输入是一个小时时间序列。我想根据每小时的序列来预测每天的值。
目前我所做的是生成每小时的预测,然后将第一个预测作为每天的预测。然而,我想知道是否有一种方法可以在日常水平上产生相同的预测。
谢谢您!你知道吗


Tags: add编码inputmodellayerstrain序列keras
2条回答

一个选项是,您还可以给出一个名为batch_input_shape的参数,而不是input_shape。不同的是,现在您必须给定一个固定的批处理大小,并且您的输入数组形状将类似于(24, X_train.shape[1], X_train.shape[2])。你知道吗

您还可以选择设置另一个参数return_sequences。此参数说明是否在每个时间步返回输出,而不是在最后一个时间步返回输出。当我们将return_sequences设置为True时,输出形状将变成一个3D数组,而不是2D数组。你知道吗

model = keras.Sequential()

model.add(keras.layers.LSTM(units=64,
                            batch_input_shape=(24, X_train.shape[1], X_train.shape[2])))

model.add(keras.layers.Dense(units=1,  activation='sigmoid'))

model.compile(
  loss='binary_crossentropy',
  optimizer = keras.optimizers.Adam(lr=0.0001),
  metrics=['acc']
)

我认为你有两个选择。你知道吗

  1. 使用基于每日的训练数据集训练模型。过滤出当天最合适的数据点时,可以使用重复次数最多的数据点(模式)或平均值。

  2. 以每小时的输出为基础,预测未来24小时的24个输出,并得到这24个输出的平均值或模式作为当天的预测。

最好的办法可能是第二种。这将是非常准确的。你知道吗

相关问题 更多 >