2015-11-26 6 views
62

Ich lese einige Beispiel-Codes in Tensorflow, fand ich folgenden CodeWas ist der Zweck von 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

Aber ich kann keine Dokumente über diese Verwendung von tf.app.flags finden.

Und ich fand die Durchführung dieser Flags im Offensichtlich tensorflow/tensorflow/python/platform/default/_flags.py

ist, diese tf.app.flags irgendwie verwendet, um ein Netzwerk zu konfigurieren, also warum ist es nicht in der API-Dokumentation? Kann mir jemand erklären, was hier vor sich geht?

Antwort

72

Das tf.app.flags Modul ist derzeit eine dünne Hülle um Python-gflags, so dass die documentation for that project ist die beste Ressource für die, wie es zu benutzen argparse, die eine Teilmenge der Funktionalität in python-gflags implementiert.

Beachten Sie, dass dieses Modul derzeit zum Zweck des Schreibens von Demo-Apps gepackt ist und technisch nicht Teil der öffentlichen API ist. Es kann sich daher in Zukunft ändern.

Wir empfehlen, dass Sie Ihr eigenes Flag-Parsing mit argparse oder einer anderen von Ihnen bevorzugten Bibliothek implementieren.

EDIT:tf.app.flags Das Modul ist in der Tat nicht implementiert python-gflags verwenden, aber es verwendet eine ähnliche API.

+45

"verpackt als eine Bequemlichkeit für das Schreiben von Demo-Apps, und ist nicht technisch Teil des öffentlichen AP" ... irgendwie seltsam, dass es in fast jedem Tutorial verwendet wird, aber es gibt keine Dokumentation darüber. Führt zu viel Verwirrung. – speedplane

+1

Ein gutes Beispiel für die Verwendung von argparse zum Übergeben von Argumenten an ein TensorFlow-Modell und wie es in ein Python-Modul für die Cloud gebündelt wird, finden Sie unter [task.py] (https://github.com/GoogleCloudPlatform/training- Data-Analyst/Blob/Master/Kurse/Machine_Learning/Cloudmle/Taxifare/Trainer/Task.py) in der [Taxifare] (https://github.com/GoogleCloudPlatform/training-data-analyst/tree/master/courses/ machine_learning/cloudmle/taxifare) Modul, das Teil der [Kursunterlagen für Schulungsdaten-Analysten] ist (https://github.com/GoogleCloudPlatform/training-data-analyst/tree/master/courses/machine_learning/cloudmle/). – charlesreid1

+0

Ist 'tf.app.run' auch nicht Teil der öffentlichen API? Da es sich auf 'tf.app.flags' und öffentliche Dokumentation (https://www.tensorflow.org/api_docs/python/tf/app/run) stützt, nehme ich an, dass es öffentlich ist und unterstützt wird. Wenn es stattdessen empfohlen wird, 'argparse' zu ​​verwenden, könnten Sie ein kurzes Beispiel für die empfohlene Verwendung von 'argparse' geben? – naktinis