我正在训练编码如下的单层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的输入是每小时的时间序列。我想根据小时序列预测每日水平的值。
目前,我要做的是生成每小时的预测,然后将第一个预测作为每天的预测。但是我想知道是否有一种方法可以每天生成相同的预测。
谢谢!
答案 0 :(得分:0)
您有两种选择。
使用基于每日的训练数据集训练模型。在筛选出当天最合适的数据点时,可以使用重复次数(mode)或均值最大的数据点。
以小时为单位获取输出,但预测接下来24小时的24个输出,并获取这24个的平均值或众数作为当天的预测。
最好的方法可能是第二种方法。会很准确的。
答案 1 :(得分:0)
一个选择是,您也可以给一个名为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']
)