Quel est le but de tf.app.drapeaux en TensorFlow?
Je suis en train de lire quelques exemple des codes dans Tensorflow, j'ai trouvé 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 docs sur cette utilisation de tf.app.flags
.
Et j'ai trouvé la mise en œuvre de ce drapeaux est dans le
tensorflow/tensorflow/python/platform/default/_flags.py
Évidemment, ce tf.app.flags
est en quelque sorte utilisé pour configurer un réseau, alors pourquoi n'est-il pas dans l'API docs? Quelqu'un peut-il expliquer ce qui se passe ici?
Vous devez vous connecter pour publier un commentaire.
La
tf.app.flags
module est actuellement une mince wrapper autour depython-gflags, de sorte que le la documentation pour ce projet est la meilleure ressource pour la façon de l'utiliserargparse
, qui implémente un sous-ensemble de la fonctionnalité depython-gflags
.Noter que ce module est actuellement présenté comme une commodité pour l'écriture de démonstration des applications, et n'est pas techniquement partie de l'API publique, de sorte qu'il peut changer dans le futur.
Nous vous recommandons d'implémenter votre propre drapeau de l'analyse en utilisant
argparse
ou quelle que soit la bibliothèque vous préférez.EDIT: La
tf.app.flags
module n'est pas en fait mis en œuvre à l'aide depython-gflags
, mais il utilise une API similaire.tf.app.run
également pas partie de l'API publique? Parce qu'il s'appuie surtf.app.flags
et il a le public de la documentation (tensorflow.org/api_docs/python/tf/app/run), donc je suppose qu'il est public et pris en charge. Si il est recommandé d'utiliserargparse
au lieu de cela, pouvez-vous donner un bref exemple de la manière recommandée de l'utiliser avecargparse
?La
tf.app.flags
module est une fonctionnalité fournie par Tensorflow à mettre en œuvre des options de ligne de commande pour votre Tensorflow programme. Par exemple, le code vous est venu à travers le ferait la suivante:Le premier paramètre définit le nom du drapeau, tandis que le second définit la valeur par défaut dans le cas où le drapeau n'est pas spécifié lors de l'exécution du fichier.
Donc, si vous exécutez la commande suivante:
puis l'apprentissage de taux est fixé à 1,00 $ et restera à 0,01 si le drapeau n'est pas spécifié.
Comme mentionné dans cet article, les docs ne sont probablement pas présent, car cela pourrait être quelque chose que Google exige en interne pour ses développeurs à utiliser.
Aussi, comme mentionné dans le post, il ya plusieurs avantages de l'utilisation de Tensorflow flags over drapeau fonctionnalités offertes par d'autres paquets Python comme
argparse
surtout lorsqu'il s'agit Tensorflow modèles, le plus important étant que vous pouvez fournir Tensorflow des informations spécifiques pour le code, telles que les informations sur le GPU à utiliser.À Google, ils utilisent le drapeau des systèmes pour définir des valeurs par défaut pour les arguments. Il est similaire à la argparse. Ils utilisent leur propre système de drapeau au lieu de argparse ou sys.argv.
Source: j'y ai travaillé avant.
Lorsque vous utilisez
tf.app.run()
, vous pouvez transférer la variable très commodément entre threads à l'aide detf.app.flags
. Voir cette pour une utilisation ultérieure detf.app.flags
.Après avoir essayé de nombreuses fois, j'ai trouvé cette option pour imprimer tous les indicateurs clés ainsi que la valeur réelle -