J'ai fait un petit changement au tutoriel Tensorflow MNIST. Code d'origine (fully_connected_feed.py, lignes 194-202):Changement de données entre les appels dans Tensorflow
checkpoint_file = os.path.join(FLAGS.log_dir, 'model.ckpt')
saver.save(sess, checkpoint_file, global_step=global_step)
#Evaluate against the training set.
print('Training Data Eval:')
do_eval(sess,
eval_correct,
images_placeholder,
labels_placeholder,
data_sets.train)
J'ai simplement ajouté une évaluation:
checkpoint_file = os.path.join(FLAGS.log_dir, 'model.ckpt')
saver.save(sess, checkpoint_file, global_step=global_step)
print('Something strange:')
do_eval(sess, eval_correct, images_placeholder,labels_placeholder,
data_sets.train)
#Evaluate against the training set.
print('Training Data Eval:')
do_eval(sess,
eval_correct,
images_placeholder,
labels_placeholder,
data_sets.train)
Les résultats de cette évaluation sont proches, mais pas mêmes (les chiffres varient du lancement au lancement):
Something strange:
Num examples: 55000 Num correct: 49218 Precision @ 1: 0.8949
Training Data Eval:
Num examples: 55000 Num correct: 49324 Precision @ 1: 0.8968
Comment est-ce possible? UPD: Lien ajouté à tensorflow github: https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/tutorials/mnist
Aucune idée sur le flux tensor, mais cela ne devrait pas arriver généralement. Est-ce que do_eval a des effets secondaires non intentionnels? Avez-vous vérifié la documentation? –
Je ne sais pas d'où ces effets secondaires pourraient provenir. Le code do_eval n'a d'appel qu'à la méthode evaluation() de mnist.py, et cette méthode n'apporte aucune modification aux tenseurs. –
Cela semble plutôt bizarre. Je ne suis pas très familier avec tensorflow spécifiquement, mais je ne vois pas de quelle façon cela pourrait être considéré comme un comportement sain (je suppose que do_eval devrait juste passer les échantillons et calculer la précision sans changer le net). –