Ich lese einige Beispielcodes in Tensorflow und habe folgenden Code gefunden
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.')
im tensorflow/tensorflow/g3doc/tutorials/mnist/fully_connected_feed.py
Ich kann jedoch keine Dokumente zu dieser Verwendung von finden tf.app.flags
.
Und ich fand die Implementierung dieser Flags in der
tensorflow/tensorflow/python/platform/default/_flags.py
Offensichtlich wird dies tf.app.flags
irgendwie zum Konfigurieren eines Netzwerks verwendet. Warum ist es also nicht in den API-Dokumenten enthalten? Kann mir jemand erklären, was hier los ist?
quelle
tf.app.run
auch nicht Teil der öffentlichen API? Da es auftf.app.flags
öffentlichen Dokumentationen basiert und diese hat ( tensorflow.org/api_docs/python/tf/app/run ), gehe ich davon aus, dass es öffentlich ist und unterstützt wird. Wenn die Verwendung empfohlenargparse
wird, können Sie ein kurzes Beispiel für die empfohlene Verwendung gebenargparse
?Das
tf.app.flags
Modul ist eine von Tensorflow bereitgestellte Funktion zum Implementieren von Befehlszeilenflags für Ihr Tensorflow-Programm. Der Code, auf den Sie gestoßen sind, würde beispielsweise Folgendes tun:Der erste Parameter definiert den Namen des Flags, während der zweite den Standardwert definiert, falls das Flag während der Ausführung der Datei nicht angegeben wird.
Wenn Sie also Folgendes ausführen:
dann wird die Lernrate auf 1,00 eingestellt und bleibt 0,01, wenn das Flag nicht angegeben wird.
Wie in diesem Artikel erwähnt , sind die Dokumente wahrscheinlich nicht vorhanden, da Google diese möglicherweise intern benötigt, damit seine Entwickler sie verwenden können.
Wie in diesem Beitrag erwähnt, bietet die Verwendung von Tensorflow-Flags gegenüber der Flag-Funktionalität anderer Python-Pakete mehrere Vorteile,
argparse
insbesondere bei Tensorflow-Modellen. Das Wichtigste ist, dass Sie dem Code Tensorflow-spezifische Informationen wie Informationen bereitstellen können über welche GPU verwendet werden soll.quelle
Bei Google verwenden sie Flaggensysteme, um Standardwerte für Argumente festzulegen. Es ist ähnlich wie Argparse. Sie verwenden ihr eigenes Flaggensystem anstelle von argparse oder sys.argv.
Quelle: Ich habe dort schon einmal gearbeitet.
quelle
Wenn Sie verwenden
tf.app.run()
, können Sie die Variable sehr bequem zwischen Threads mit übertragentf.app.flags
. Siehe dies für die weitere Verwendung vontf.app.flags
.quelle
Nachdem ich viele Male versucht hatte, fand ich dies, um alle FLAGS-Schlüssel sowie den tatsächlichen Wert zu drucken -
quelle