python install - Quel est le but de tf.app.flags dans TensorFlow?




not telecharger (3)

Je lis quelques exemples de codes dans Tensorflow, j'ai trouvé le code suivant

flags = tf.app.flags
FLAGS = flags.FLAGS
flags.DEFINE_float('learning_rate', 0.01, 'Initial learning rate.')
flags.DEFINE_integer('max_steps', 2000, 'Number of steps to run trainer.')
flags.DEFINE_integer('hidden1', 128, 'Number of units in hidden layer 1.')
flags.DEFINE_integer('hidden2', 32, 'Number of units in hidden layer 2.')
flags.DEFINE_integer('batch_size', 100, 'Batch size.  '
                 'Must divide evenly into the dataset sizes.')
flags.DEFINE_string('train_dir', 'data', 'Directory to put the training data.')
flags.DEFINE_boolean('fake_data', False, 'If true, uses fake data '
                 'for unit testing.')

dans tensorflow/tensorflow/g3doc/tutorials/mnist/fully_connected_feed.py

Mais je ne trouve aucun document sur cette utilisation de tf.app.flags .

Et j'ai trouvé que l'implémentation de ces flags est dans le tensorflow/tensorflow/python/platform/default/_flags.py

De toute évidence, ce tf.app.flags est en quelque sorte utilisé pour configurer un réseau, alors pourquoi n'est-il pas dans les documents de l'API? Quelqu'un peut-il expliquer ce qui se passe ici?


Answers

Le module tf.app.flags est actuellement un wrapper fin autour de python-gflags, donc la documentation pour ce projet est la meilleure ressource pour utiliser argparse , qui implémente un sous-ensemble de la fonctionnalité dans python-gflags .

Notez que ce module est actuellement fourni pour faciliter l'écriture d'applications de démonstration et qu'il ne fait pas techniquement partie de l'API publique. Il peut donc être modifié à l'avenir.

Nous vous recommandons d'implémenter votre propre analyse de drapeau en utilisant argparse ou toute autre bibliothèque que vous préférez.

EDIT: Le module tf.app.flags n'est pas implémenté avec python-gflags , mais utilise une API similaire.


Lorsque vous utilisez tf.app.run() , vous pouvez très facilement transférer la variable entre les threads en utilisant tf.app.flags . Voir this pour une utilisation ultérieure de tf.app.flags .


Dans mon code, ils s'exécutent tous les deux s'il n'y a qu'un seul élément dans la liste d'amis. Voici un test que vous pouvez exécuter dans le shell où vous pourrez peut-être déterminer ce qui ne fonctionne pas:

$ ./manage.py shell

>>> from django import template
>>> t = template.Template("""{% for f in friendslist %}
                         {% if forloop.first %}
                             First of the loop                            
                         {% endif %}
                         {{ f }}
                         {% if forloop.last %}
                             Last of the loop
                         {% endif %}
                 {% endfor %}""")

>>> c = template.Context({'friendslist' : ['one element',]})
>>> t.render(c)


                        First of the loop

                    one element

                         Last of the loop






python tensorflow