我正在尝试在this blog post之后提出用于时间序列预测的MLP模型。我有138个时间序列,其中lookback_window = 28(训练为50127时间序列,验证为24255时间序列)。我需要预测下一个值(timesteps = 28,n_features = 1)。我从3层网络开始,但是训练得并不好。我试图通过添加更多的层/更多的单元来使网络更深,但是并没有改善。在图片中,您可以看到以下模型的预测结果这是我的模型代码:
inp = Input(batch_shape=(batch_size, lookback_window))
first_layer = Dense(1000, input_dim=28, activation='relu')(inp)
snd_layer = Dense(500)(first_layer)
thirs_layer = Dense(250)(snd_layer)
tmp = Dense(100)(thirs_layer)
tmp2 = Dense(50)(tmp)
tmp3 = Dense(25)(tmp2)
out = Dense(1)(tmp3)
model = Model(inp, out)
model.compile(loss='mean_squared_error', optimizer='adam')
history = model.fit(train_data, train_y,
epochs=1000,
batch_size=539,
validation_data=(validation_data, validation_y),
verbose=1,
shuffle=False)
我想念什么?我该如何改善?
答案 0 :(得分:1)
我注意到的主要事情是您没有在图层中使用非线性。如果您希望大于1 / -1的值,我会在隐藏层使用relus,在最后一层使用线性层。如果您不希望使用它们,请使用tanh。通过增加数据,您会更难解决问题,因此主要是线性模型的拟合严重不足。
答案 1 :(得分:0)