对于showHideBudget: function(contentObj, modelObj){
_.each(contentObj.find('.budgetSec'), function(item){
budgetFlag = true;
return;
}, modelObj);
}
,我得到了不同的结果。在trainig训练期间,最后一次训练后得到0.296,评估模型时得到0.112。有谁知道为什么会这样吗?
代码如下:
mse
批次大小和所有内容保持不变。有人知道为什么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)
的结果如此不同吗?
答案 0 :(得分:1)
训练损失与训练结束后根据训练数据获得的损失之间存在差异的原因是模型中存在Dropout
层。这是因为该层在训练和推理期间具有不同的行为。正如我在another answer中提到的那样,您可以通过将training=True
传递给出局呼叫,或者使用K.learning_phase()
标志和一个后端函数来使这种行为相同。