TensorFlow 1.10+ estimador personalizado que se detiene antes con train_and_evaluate

Supongamos que estás entrenando a un @ personalizatf.estimator.Estimator contf.estimator.train_and_evaluate utilizando un conjunto de datos de validación en una configuración similar a la de@ simlmx's:

classifier = tf.estimator.Estimator(
    model_fn=model_fn,
    model_dir=model_dir,
    params=params)

train_spec = tf.estimator.TrainSpec(
    input_fn = training_data_input_fn,
)

eval_spec = tf.estimator.EvalSpec(
    input_fn = validation_data_input_fn,
)

tf.estimator.train_and_evaluate(
    classifier,
    train_spec,
    eval_spec
)

menudo, uno usa un conjunto de datos de validación para cortar el entrenamiento para evitar el sobreajuste cuando la pérdida continúa mejorando para el conjunto de datos de entrenamiento pero no para el conjunto de datos de validació

Actualmente eltf.estimator.EvalSpec permite que uno especifique después de cuántossteps (predeterminado a 100) para evaluar el modelo.

¿Cómo puede uno (si es posible no usartf.contrib funciones) designar para finalizar el entrenamiento después den número de llamadas de evaluación n * steps) donde la pérdida de evaluación no mejora y luego guarda el "mejor" modelo / punto de control (determinado por el conjunto de datos de validación) en un nombre de archivo único (por ejemplo,best_validation.checkpoint)

Respuestas a la pregunta(1)

Su respuesta a la pregunta