Je lis des 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 pas de documentation sur cette utilisation de tf.app.flags
.
Et j'ai trouvé que la mise en œuvre de ces drapeaux est
tensorflow/tensorflow/python/platform/default/_flags.py
De toute évidence, cela tf.app.flags
est en quelque sorte utilisé pour configurer un réseau, alors pourquoi ne figure-t-il pas dans la documentation de l'API? Quelqu'un peut-il expliquer ce qui se passe ici?
la source
tf.app.run
pas non plus partie de l'API publique? Parce qu'il s'appuie surtf.app.flags
et qu'il a une documentation publique ( tensorflow.org/api_docs/python/tf/app/run ), je suppose donc qu'il est public et pris en charge. S'il est recommandé d'utiliser à laargparse
place, pourriez-vous donner un bref exemple de la manière recommandée de l'utiliser avecargparse
?Le
tf.app.flags
module est une fonctionnalité fournie par Tensorflow pour implémenter des indicateurs de ligne de commande pour votre programme Tensorflow. À titre d'exemple, le code que vous avez rencontré ferait ce qui suit:Le premier paramètre définit le nom de l'indicateur tandis que le second définit la valeur par défaut au cas où l'indicateur n'est pas spécifié lors de l'exécution du fichier.
Donc, si vous exécutez ce qui suit:
alors la vitesse d'apprentissage est fixée à 1,00 et restera 0,01 si l'indicateur n'est pas spécifié.
Comme mentionné dans cet article , les documents ne sont probablement pas présents, car cela pourrait être quelque chose que Google a besoin en interne pour que ses développeurs l'utilisent.
En outre, comme mentionné dans l'article, il existe plusieurs avantages à utiliser les indicateurs Tensorflow par rapport à la fonctionnalité d'indicateur fournie par d'autres packages Python,
argparse
notamment lorsque vous traitez avec des modèles Tensorflow, le plus important étant que vous pouvez fournir au code des informations spécifiques à Tensorflow, telles que des informations. sur le GPU à utiliser.la source
Chez Google, ils utilisent des systèmes d'indicateurs pour définir les valeurs par défaut des arguments. C'est similaire à argparse. Ils utilisent leur propre système d'indicateurs au lieu de argparse ou sys.argv.
Source: J'y ai travaillé avant.
la source
Lorsque vous utilisez
tf.app.run()
, vous pouvez transférer la variable très facilement entre les threads en utilisanttf.app.flags
. Voir ceci pour une utilisation ultérieure detf.app.flags
.la source
Après avoir essayé plusieurs fois, j'ai trouvé cela pour imprimer toutes les clés FLAGS ainsi que la valeur réelle -
la source