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
)