2015-11-26 14 views
62

Sto leggendo alcuni codici di esempio in tensorflow, ho trovato il codice seguenteQual è lo scopo di tf.app.flags in TensorFlow?

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.') 

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

ma non riesco a trovare nessuna documentazione su questo utilizzo di tf.app.flags.

E ho trovato l'attuazione di questo flag è nella tensorflow/tensorflow/python/platform/default/_flags.py

Ovviamente, questo tf.app.flags è in qualche modo utilizzato per configurare una rete, quindi perché non è vero nella documentazione API? Qualcuno può spiegare cosa sta succedendo qui?

risposta

72

Il modulo tf.app.flags è attualmente un involucro sottile intorno python-gflags, quindi il documentation for that project è la miglior risorsa per come usarlo argparse, che implementa un sottoinsieme delle funzionalità in python-gflags.

Nota che questo modulo è attualmente disponibile come pacchetto per la convenienza della scrittura di app demo e non è tecnicamente parte dell'API pubblica, quindi potrebbe cambiare in futuro.

Si consiglia di implementare il proprio flag di analisi utilizzando argparse o qualsiasi libreria preferita.

EDIT: Il modulo tf.app.flags non è infatti implementato utilizzando python-gflags, ma utilizza un API simile.

+45

"pacchettizzato come comodità per la scrittura di app demo, e non è tecnicamente parte dell'AP pubblico" ... un po 'strano che sia usato in quasi tutti i tutorial, ma non c'è documentazione su di esso. Porta a molta confusione – speedplane

+1

Per un buon esempio di come utilizzare argparse per passare argomenti a un modello TensorFlow e come raggrupparlo in un modulo Python per il cloud, vedere [task.py] (https://github.com/GoogleCloudPlatform/training- analista di dati/blob/master/corsi/machine_learning/cloudmle/taxifare/trainer/task.py) nel [taxifare] (https://github.com/GoogleCloudPlatform/training-data-analyst/tree/master/courses/ machine_learning/cloudmle/taxifare), parte del materiale [materiali del corso di training-data-analyst] (https://github.com/GoogleCloudPlatform/training-data-analyst/tree/master/courses/machine_learning/cloudmle/). – charlesreid1

+0

Anche 'tf.app.run' non fa parte dell'API pubblica? Perché si basa su 'tf.app.flags' e ha una documentazione pubblica (https://www.tensorflow.org/api_docs/python/tf/app/run), quindi presumo che sia pubblico e supportato. Se invece si consiglia di usare 'argparse', potresti fornire un breve esempio del modo consigliato di usarlo con' argparse'? – naktinis