Saltar al contenido

¿Cuál es la diferencia entre model.fit() y model.evaluate() en Keras?

Enrique, parte de este equipo de trabajo, nos ha hecho el favor de escribir esta sección porque conoce perfectamente el tema.

Solución:

fit() es para entrenar el modelo con las entradas dadas (y las etiquetas de entrenamiento correspondientes).

evaluate() es para evaluar el modelo ya entrenado utilizando los datos de validación (o prueba) y las etiquetas correspondientes. Devuelve el valor de pérdida y los valores de métricas del modelo.

predict() es para la predicción real. Genera predicciones de salida para las muestras de entrada.

Consideremos un ejemplo de regresión simple:

# input and output
x = np.random.uniform(0.0, 1.0, (200))
y = 0.3 + 0.6*x + np.random.normal(0.0, 0.05, len(y))

ingrese la descripción de la imagen aquí

Ahora apliquemos un modelo de regresión en keras:

# A simple regression model
model = Sequential()
model.add(Dense(1, input_shape=(1,)))
model.compile(loss='mse', optimizer='rmsprop')

# The fit() method - trains the model
model.fit(x, y, nb_epoch=1000, batch_size=100)

Epoch 1000/1000
200/200 [==============================] - 0s - loss: 0.0023

# The evaluate() method - gets the loss statistics
model.evaluate(x, y, batch_size=200)     
# returns: loss: 0.0022612824104726315

# The predict() method - predict the outputs for the given inputs
model.predict(np.expand_dims(x[:3],1)) 
# returns: [ 0.65680361],[ 0.70067143],[ 0.70482892]

En el aprendizaje profundo, primero desea entrenar su modelo. Toma sus datos y los divide en dos conjuntos: el conjunto de entrenamiento y el conjunto de prueba. Parece bastante común que el 80 % de sus datos vaya a su conjunto de entrenamiento y el 20 % vaya a su conjunto de prueba.

Su conjunto de entrenamiento se pasa a su llamada a fit() y su conjunto de prueba pasa a su llamada a evaluate(). Durante la operación de ajuste, una cantidad de filas de sus datos de entrenamiento se introducen en su red neuronal (según el tamaño de su lote). Después de que se envía cada lote, el algoritmo de ajuste realiza una propagación hacia atrás para ajustar los pesos en su red neuronal.

Una vez hecho esto, su red neuronal está entrenada. El problema es que, a veces, su red neuronal se sobreajusta, lo cual es una condición en la que funciona bien para el conjunto de entrenamiento pero mal para otros datos. Para protegerse contra esta situación, ejecute el evaluate() función para enviar nuevos datos (su conjunto de prueba) a través de su red neuronal para ver cómo funciona con datos que nunca ha visto. No hay entrenamiento, esto es puramente una prueba. Si todo va bien, la puntuación del entrenamiento es similar a la puntuación de las pruebas.

encajar(): entrena el modelo para un número determinado de épocas (esto es para el tiempo de entrenamiento, con el conjunto de datos de entrenamiento).

predecir(): genera predicciones de salida para las muestras de entrada (esto es en algún momento entre el entrenamiento y el tiempo de prueba).

evaluar(): Devuelve el valor de pérdida y los valores de métricas para el modelo en modo de prueba (esto es para el tiempo de prueba, con el conjunto de datos de prueba).

Si estás contento con lo expuesto, tienes el poder dejar una reseña acerca de qué te ha gustado de este post.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *