Python Keras model.evaluate()和交叉验证分数之间的差异

Python Keras model.evaluate()和交叉验证分数之间的差异,python,pandas,keras,neural-network,Python,Pandas,Keras,Neural Network,因为我有一个非常小的数据集,所以我使用交叉验证以以下方式计算训练/验证错误: for train, val in cv.split(x_train, y_train): model = Sequential() # create first hidden layer model.add(Dense(units=6, input_dim=n_features, activation='relu')) #create additional hidden layer model.add(D

因为我有一个非常小的数据集,所以我使用交叉验证以以下方式计算训练/验证错误:

for train, val in cv.split(x_train, y_train):

 model = Sequential()
 # create first hidden layer
 model.add(Dense(units=6, input_dim=n_features, activation='relu'))
 #create additional hidden layer
 model.add(Dense(units=6, activation='relu'))
 #add Dropout layer
 model.add(Dropout(0.2)) 
 # create additional hidden layer
 model.add(Dense(units=6, activation='relu'))
 # create last layer
 model.add(Dense(units=1, activation='sigmoid'))
 #Define optimizer
 opt = keras.optimizers.Adam(0.002)
 # compile model 
 model.compile(optimizer=opt, loss='mse', metrics=['mae'])
 # fit model to training data
 history = model.fit(x_train[train], y_train[train],batch_size=32, epochs=250,verbose=0)

 #Evaluate the model on validation data
 scores = model.evaluate(x_train[val], y_train[val], verbose=0)
 cvscores_loss.append(scores[0])
 cvscores_metric.append(scores[1])

# Print scores
print('Average MSE:', np.mean(cvscores_loss))
print('Average MAE:', np.mean(cvscores_metric))
当我现在对培训数据使用model.evaluate()时:

train_loss = model.evaluate(x_train, y_train, verbose=0)[0]
train_mae = model.evaluate(x_train, y_train, verbose=0)[1]
print('training loss (MSE):', train_loss, '\ntraining MAE:', train_mae)
我得到了不同的MSE和MAE。 这是因为model.evaluate()在训练后获取神经网络的状态,并在整个训练数据集上对其进行评估,而在交叉验证过程中,会计算所有k倍的平均误差吗

谢谢澄清! 米歇尔