TensorFlow 1.10+ estimador personalizado parando cedo com train_and_evaluate
Suponha que você esteja treinando umtf.estimator.Estimator
comtf.estimator.train_and_evaluate
usando um conjunto de dados de validação em uma configuração semelhante à 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
)
Freqüentemente, usa-se um conjunto de dados de validação para interromper o treinamento e evitar ajustes excessivos quando a perda continua a melhorar no conjunto de dados de treinamento, mas não no conjunto de dados de validaçã
Atualmente, otf.estimator.EvalSpec
permite especificar depois de quantossteps
(o padrão é 100) para avaliar o model
Como se pode (se possível, não usartf.contrib
funções) designar para terminar o treinamento apósn
número de chamadas de avaliação n * steps
) onde a perda de avaliação não melhora e salva o "melhor" modelo / ponto de verificação (determinado pelo conjunto de dados de validação) em um nome de arquivo exclusivo (por exemplo,best_validation.checkpoint
)