es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Diferentes pérdidas de validación en model.fit y model.evaluate

Siguiendo el tutorial del modelo de dos torres, hice mi modelo de recomendación. Luego lo entrené durante una época y lo evalué:

cached_train = train.shuffle(100000).batch(4096)
cached_test = test.batch(4096).cache()

model = Model(layer_sizes=[32], use_context=False)
model.compile(optimizer=tf.keras.optimizers.Adagrad(0.001))
history = model.fit(cached_train, validation_data=cached_test, validation_freq=1,
                    callbacks=[tensorboard_callback],
                    epochs=1)

Este modelo tiene el siguiente registro (el valor val_total_loss es menor que la pérdida de entrenamiento):

684/684 [==============================] - 195s 284ms/step
- factorized_top_k/top_100_categorical_accuracy: 0.1404 - loss: 33958.1878 - regularization_loss: 0.0000e+00 - total_loss: 33958.1878 - val_factorized_top_k/top_100_categorical_accuracy: 0.1185 - val_loss: 25582.6953 - val_regularization_loss: 0.0000e+00 - **val_total_loss: 25582.6953**

Luego evalué la exactitud utilizando model.evaluate:

test_accuracy = model.evaluate(
    cached_test, return_dict=True)
171/171 [==============================] - 34s 197ms/step -
- factorized_top_k/top_100_categorical_accuracy: 0.1185 - loss: 33966.4893 - regularization_loss: 0.0000e+00 - **total_loss: 33966.4893**

Aunque no cambié el modelo después de entrenar una época, la total_loss en model.evaluate(cached_test) es diferente al valor que obtuve con model.fit.

¿Por qué está sucediendo esto?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Esto podría estar ocurriendo debido a la diferencia en el comportamiento de los dos métodos. Durante el entrenamiento, el modelo actualiza sus pesos basándose en la función de pérdida y el optimizador utilizado. Por otro lado, durante la prueba, el modelo utiliza los pesos obtenidos durante el entrenamiento para hacer predicciones y calcular la pérdida.

    Dado que el modelo no se actualiza durante la evaluación, es posible que la pérdida obtenida durante la prueba difiera ligeramente de la obtenida durante el entrenamiento. Además, la pérdida reportada durante la prueba incluye cualquier pérdida de regularización, mientras que la pérdida reportada durante el entrenamiento puede no incluirlas si el término de regularización se estableció en cero.

    Por lo tanto, la diferencia en la pérdida obtenida durante el entrenamiento y la prueba no necesariamente significa que haya un problema con el modelo. Es normal que los dos valores sean ligeramente diferentes. Sin embargo, si hay una diferencia significativa entre los dos, puede ser una indicación de que el modelo está sobreajustado o subajustado.

Comments are closed.