0

我得到不同的结果mse。在训练期间,我在最后一个训练时期后得到 0.296,当我评估我的模型时,我得到 0.112。有谁知道为什么会这样?

这是代码:

model = Sequential()
model.add(Dropout(0.2))
model.add(LSTM(100, return_sequences=True,batch_input_shape=(batch_size,look_back,dim_x)))
model.add(Dropout(0.2))
model.add(LSTM(150,return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(100,return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(50,return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(1, activation='linear'))

model.compile(loss='mean_squared_error', optimizer='adam')
history=model.fit(x_train_r, y_train_r, validation_data=(x_test_r, y_test_r),\
                  epochs=epochs, batch_size=batch_size, callbacks=[es])

score_test = model.evaluate(x_test_r, y_test_r,batch_size=batch_size)
score_train = model.evaluate(x_train_r, y_train_r,batch_size=batch_size)

print("Score Training Data:")
print(score_train)

批量大小和一切都保持不变。有谁知道为什么我得到如此不同的结果mse

4

1 回答 1

1

训练损失和训练结束后在训练数据上得到的损失之间存在差异的原因是Dropout模型中存在层。这是因为该层在训练和推理期间具有不同的行为。正如我在另一个答案中提到的那样,您可以通过传递training=True给 dropout 调用或使用K.learning_phase()标志和后端函数来使这种行为相同。

于 2018-11-05T14:46:53.383 回答