0
respostas

Pequenas diferenças entre métricas do model.fit e do model.evaluate (KERAS)

Eu percebo pequenas diferenças quando pego resultado do model.fit (history) e quando pego do model.evaluate()

# fit model
Hist = model_rna.fit(x_train, y_train,
                  validation_data=(x_val, y_val),
                  callbacks=[early_stopping],
                  verbose=2,
                  epochs=epochs)

# get last trained mse
hist = pd.DataFrame(Hist.history)
mse_train = [i for i in np.array(hist['mse']).tolist()]
print(mse_train[-1])

Resultado: 0.03789380192756653

# evaluate the trained model
model_rna.evaluate(x_train, y_train)

Resultado: 5/5 [==============================] - 0s 4ms/step - loss: 0.0379 - mse: 0.0379 - acc: 0.0000e+00 [0.03786146640777588, 0.03786146640777588, 0.0]

Se fizer o cálculo "manual":

Sum_of_Squared_Errors= np.sum( (y_train - modelo_rna.predict(x_train))**2 )
print(Sum_of_Squared_Errors/len(y_train))

Resultado: 0.03786148292614872

Esse é exatamente o mesmo que encontro usando o model.evaluate mas um pouco diferente do model.fit (history()

Por que isso?

Obs.: Minhas amostras de treinamento e validação estão fixas.