我有一个带有双向 LSTMS 的 CNN-RNN 模型架构,用于时间序列回归问题。我的损失没有收敛超过 50 个时期。每个 epoch 有 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)
Run Code Online (Sandbox Code Playgroud)
模型 :
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'])
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Keras中的多变量LSTM进行多步时间序列预测.具体来说,我最初每个时间步有两个变量(var1和var2).在这里遵循在线教程后,我决定在时间(t-2)和(t-1)使用数据来预测时间步t的var2的值.如示例数据表所示,我使用前4列作为输入,Y作为输出.我可以在这里看到我开发的代码,但我有三个问题.
var1(t-2) var2(t-2) var1(t-1) var2(t-1) var2(t)
2 1.5 -0.8 0.9 -0.5 -0.2
3 0.9 -0.5 -0.1 -0.2 0.2
4 -0.1 -0.2 -0.3 0.2 0.4
5 -0.3 0.2 -0.7 0.4 0.6
6 -0.7 0.4 0.2 0.6 0.7
Run Code Online (Sandbox Code Playgroud)