2017-09-05 1 views
1

Savez-vous s'il existe un moyen de choisir le modèle enregistré lors de l'utilisation de Estimator dans un test? Parce que chaque 'save_checkpoints_steps', le modèle est sauvegardé mais ce modèle n'est pas forcément le meilleur.Sélectionnez le modèle à enregistrer dans Experiment Tensorflow

def model_fn(features, labels, mode, params): 
    predict = model_predict_() 
    loss = model_loss() 
    train_op = model_train_op(loss, mode)  
    predictions = {"predictions": predict} 

    return tf.estimator.EstimatorSpec(
     mode = mode, 
     predictions = predictions, 
     loss = loss, 
     train_op = train_op, 
    ) 

def experiment_fn(run_config, hparams): 
    estimator = tf.estimator.Estimator(
     model_fn = model_fn, 
     config = run_config, 
     params = hparams 
    ) 

    return learn.Experiment(
     estimator = estimator, 
     train_input_fn = train_input_fn, 
     eval_input_fn = eval_input_fn, 
     eval_metrics = None, 
     train_steps = 1000, 
    ) 

ex = learn_runner.run(
     experiment_fn = experiment_fn, 
     run_config = run_config, 
     schedule = "train_and_evaluate", 
     hparams = hparams 
) 

la sortie est la suivante:

INFO: tensorflow:. Checkpoints Enregistrement pour 401 dans \ model.ckpt.

INFO: tensorflow: global_step/sec: 0,157117 INFO: tensorflow: step = 401, perte = 2,95048 (636,468 sec)

INFO: tensorflow: évaluation à partir de 2017-09-05-20: 06 : 07 INFO: tensorflow:. Restaurer les paramètres de \ model.ckpt-401

INFO: tensorflow: Evaluation [1/1] INFO: tensorflow: évaluation fini à 2017-09-05-20: 06: 09

INFO: tensorflow: Enregistrement de dict pour l'étape globale 401: global_step = 401, perte = 7,20411

INFO: tensorflow: validation (étape 401): global_step = 401, perte = 7,20411

INFO: tensorflow: perte de formation = 2,95048, step = 401 (315,393 sec)

INFO: tensorflow: Enregistrement des points de contrôle pour 451 dans . \ model.ckpt.

INFO: tensorflow: évaluation à partir de 2017-09-05-20: 11: 32

INFO: tensorflow:. Restauration de paramètres de \ model.ckpt-451

INFO: tensorflow: Évaluation [1/1]

Vous voyez que chaque fois qu'il enregistre le dernier modèle, ce qui n'est pas forcément le meilleur.

+0

S'il vous plaît, ajouter plus de détails. Dites-nous ce que vous avez fait jusqu'ici. Quel est le problème. Tel qu'il est, votre question est incompréhensible. –

Répondre

2

Les points de contrôle sont enregistrés pour l'événement que votre processus d'entraînement est interrompu. Si vous n'avez pas de points de contrôle, vous devrez recommencer à zéro. C'est un gros problème pour les gros modèles qui prennent des semaines à s'entraîner. Une fois que votre entraînement est terminé et que vous êtes satisfait de votre modèle (dans vos mots, "c'est le meilleur"), vous pouvez l'enregistrer explicitement en utilisant https://www.tensorflow.org/api_docs/python/tf/estimator/Estimator#export_savedmodel. Appelez cette méthode est le Estimator que vous avez utilisé pour créer votre Experiemnt. Notez que cette méthode enregistre le "modèle d'inférence", ce qui signifie que toutes les opérations de dégradé seront supprimées et non sauvegardées.

EDIT: En réponse au commentaire de Nicolas: Vous pouvez enregistrer des instantanés périodiquement, en plus de ceux les plus récents en utilisant l'option keep_checkpoint_every_n_hours à RunConfig que vous passez lors de la création d'un estimateur. Si vous constatez ensuite que votre modèle a obtenu les meilleures performances il y a 10 heures, vous devriez être capable de trouver un instantané à peu près à ce moment-là.

+3

Ce que je veux dire, c'est que j'entraîne le modèle pour 1000 époques, mais à 500 la perte sur l'ensemble de validation recommence la relance tandis que la perte sur l'ensemble d'entraînement continue à diminuer. Et cela reste pour les époques restantes. Ainsi, le meilleur modèle s'est produit à 500. Mais l'estimateur n'a sauvé que les 5 derniers modèles par exemple. Au lieu d'enregistrer 500 modèles (si je sauvegarde les modèles tous les 2 itérations), y a-t-il une meilleure façon de choisir quel modèle doit être sauvegardé ou non? –

+0

Modifié la réponse – iga

+0

Votre vérification n'a pas vraiment répondu à sa question, qui est aussi la mienne. Pouvez-vous déterminer une condition (comme la plus faible perte de validation) pour une sauvegarde supplémentaire? – erickrf