- и
Код: Выделить всё
A = model.evaluate(x_test, y_test)
- , где pred_test = model.predict (x_test) -это прогнозы вне выборки, полученные из моей модели,
Код: Выделить всё
B = loss(pred_test, y_test)
import keras
import numpy as np
import random as random # for sims and seed setting
random.seed(10)
x = np.random.normal([0, 1, 2], [2,1,4], (200, 3))
y = x[:,0] + 0.01 * np.power(x[:,1], 2) + np.sqrt(np.abs(x[:,2] - 3)) + np.random.normal(0, 1, (200))
y = y[:,np.newaxis]
x_train = x[0:100,:]
y_train = y[0:100,:]
x_test = x[101:200,:]
y_test = y[101:200,:]
# MSE
def MSE(a,b):
return tf.reduce_mean(tf.pow(a - b, 2))
# layers
Inputs_MLP = tf.keras.Input(batch_shape = (100,3), dtype = tf.float32)
Layer1_MLP = tf.keras.layers.Dense(16)(Inputs_MLP)
Outputs_MLP = tf.keras.layers.Dense(1)(Layer1_MLP)
# keras model
model_MLP = tf.keras.Model(Inputs_MLP, Outputs_MLP)
model_MLP.compile(loss = MSE)
history = model_MLP.fit(x = x_train, y = y_train, epochs=5, batch_size = 25)
# evaluation
# out-of-sample
model_MLP.evaluate(x_test, y_test, 100)
# 5.561294078826904
pred_MLP_test = model_MLP.predict(x_test, batch_size = 100)
MSE(pred_MLP_test, y_test)
#
# in-sample
model_MLP.evaluate(x_train, y_train, 100)
# 5.460160732269287
pred_MLP_train = model_MLP.predict(x_train, batch_size = 100)
MSE(pred_MLP_train, y_train)
#
< /code>
Оценка вне выборки дает 5,561294078826904 один раз и, с другой стороны, 5,561294010797092. Для этого примера это всего лишь небольшая разница, но это все еще беспокоит меня. Кроме того, для другого (более длинного и более сложного) примера разница больше. Я был бы признателен за любую помощь!
Подробнее здесь: https://stackoverflow.com/questions/795 ... ct-in-tf-k