with neural network machine mac learning instalar ejemplos python tensorflow

python - neural - ¿Cuál es el propósito de tf.app.flags en TensorFlow?



tensorflow neural network (5)

Cuando usa tf.app.run() , puede transferir la variable muy convenientemente entre hilos usando tf.app.flags . Vea this para un mayor uso de tf.app.flags .

Estoy leyendo algunos códigos de ejemplo en Tensorflow, encontré el siguiente código

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

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

Pero no puedo encontrar ningún documento sobre este uso de tf.app.flags .

Y descubrí que la implementación de estas banderas está en el tensorflow/tensorflow/python/platform/default/_flags.py

Obviamente, este tf.app.flags se usa de alguna manera para configurar una red, entonces, ¿por qué no está en los documentos de la API? ¿Alguien puede explicar lo que está pasando aquí?


Después de intentarlo muchas veces, encontré esto para imprimir todas las claves de BANDERAS, así como el valor real:

for key in tf.app.flags.FLAGS.flag_values_dict(): print(key, FLAGS[key].value)


El módulo tf.app.flags es actualmente una envoltura delgada alrededor de python-gflags, por lo que la documentación para ese proyecto es el mejor recurso sobre cómo usarlo argparse , que implementa un subconjunto de la funcionalidad en python-gflags .

Tenga en cuenta que este módulo actualmente está empaquetado como una conveniencia para escribir aplicaciones de demostración, y técnicamente no es parte de la API pública, por lo que puede cambiar en el futuro.

Recomendamos que implemente su propio análisis de banderas utilizando argparse o la biblioteca que prefiera.

EDITAR: El módulo tf.app.flags no se implementa de hecho usando python-gflags , pero usa una API similar.


El módulo tf.app.flags es una funcionalidad proporcionada por Tensorflow para implementar banderas de línea de comando para su programa Tensorflow. Como ejemplo, el código que encontró haría lo siguiente:

flags.DEFINE_float(''learning_rate'', 0.01, ''Initial learning rate.'')

El primer parámetro define el nombre del indicador, mientras que el segundo define el valor predeterminado en caso de que el indicador no se especifique al ejecutar el archivo.

Entonces, si ejecuta lo siguiente:

$ python fully_connected_feed.py --learning_rate 1.00

entonces la tasa de aprendizaje se establece en 1.00 y seguirá siendo 0.01 si no se especifica el indicador.

Como se menciona en este artículo , los documentos probablemente no estén presentes porque esto podría ser algo que Google requiere internamente para que lo usen sus desarrolladores.

Además, como se mencionó en la publicación, existen varias ventajas de usar los indicadores de Tensorflow sobre la funcionalidad de indicador proporcionada por otros paquetes de Python, como argparse especialmente cuando se trata de modelos de Tensorflow, siendo el más importante que puede proporcionar información específica de Tensorflow al código, como información sobre qué GPU usar.


En Google, usan sistemas de banderas para establecer valores predeterminados para los argumentos. Es similar a argparse. Usan su propio sistema de bandera en lugar de argparse o sys.argv.

Fuente: trabajé allí antes.