gpt4 book ai didi

keras - Multivariate LSTM Forecast Loss 和评估

转载 作者:行者123 更新时间:2023-12-01 13:39:59 24 4
gpt4 key购买 nike

我有一个带有双向 LSTMS 的 CNN-RNN 模型架构来解决时间序列回归问题。我的损失不会收敛超过 50 个时期。每个时期有 20k 个样本。损失在 0.001 - 0.01 之间不断波动。

batch_size=1
epochs = 50
model.compile(loss='mean_squared_error', optimizer='adam')
trainingHistory=model.fit(trainX,trainY,epochs=epochs,batch_size=batch_size,shuffle=False)
  1. 我尝试使用错误配对的 X 和 Y 数据来训练模型损失保持在 0.5 左右,我的 X 和 Y 是否合理具有非线性关系,我的模型可以通过更多时代?
  2. 我的模型的预测捕获了模式但有一个偏移量,我使用动态时间规整距离来手动检查预测的准确性,有没有更好的方法?

型号:

model = Sequential()
model.add(LSTM(units=128, dropout=0.05, recurrent_dropout=0.35, return_sequences=True, batch_input_shape=(batch_size,featureSteps,input_dim)))
model.add(LSTM(units=32, dropout=0.05, recurrent_dropout=0.35, return_sequences=False))
model.add(Dense(units=2, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])

最佳答案

如果您测试了:

  • 错误数据:损失~0.5
  • 正确数据:loss ~0.01

然后您的模型实际上能够学习一些东西。

那里有一些可能性:

  1. 你的输出数据不在最后一层激活的范围内
  2. 您的模型达到了当前学习率的极限(梯度更新步长太大,无法再改进模型)。
  3. 您的模型不足以胜任这项任务。
  4. 你的数据有一定程度的随机因素

案例 1:

确保您的 Y 在您上次激活函数的范围内。

  • 对于 tanh(LSTM 的默认值),所有 Y 数据应介于 -1 和 + 1 之间
  • 对于 sigmoid,介于 0 和 1 之间
  • 对于 softmax,介于 0 和 1 之间,但确保最后一个维度不是 1,否则所有结果将始终为 1。
  • 对于 relu,介于 0 和无穷大之间
  • 对于linear,任意值

如果你有一个有限的激活而不是无限大的激活,收敛会更好。
在第一种情况下,您可以重新编译(训练后)具有较低学习率的模型,通常我们将其除以 10,其中默认值为 0.0001:

案例 2:

如果数据没问题,请在模型停滞后尝试降低学习率。

adam 的默认学习率是0.0001,我们经常将它除以 10:

from keras.optimizers import Adam

#after training enough with the default value:
model.compile(loss='mse', optimizer=Adam(lr=0.00001)
trainingHistory2 = model.fit(.........)

#you can even do this again if you notice that the loss decreased and stopped again:
model.compile(loss='mse',optimizer=Adam(lr=0.000001)

如果问题出在学习率上,这将使您的模型学到比现在更多的东西(一开始可能会有一些困难,直到优化器自行调整)。

案例三:

如果您没有成功,也许是时候提高模型的能力了。也许向图层添加更多单元,添加更多图层甚至更改模型。

案例 4:

对此您可能无能为力...

但如果像案例 3 那样增加模型,请注意过度拟合(保留一些测试数据以比较测试损失与训练损失)。

太好的模型只会记住您的数据,而不是学习有关它的重要见解。

关于keras - Multivariate LSTM Forecast Loss 和评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46482139/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com