Я читаю несколько примеров кодов в 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.')
в tensorflow/tensorflow/g3doc/tutorials/mnist/fully_connected_feed.py
Но я не могу найти никаких документов об этом использовании tf.app.flags
.
И я обнаружил, что реализация этих флагов находится в
tensorflow/tensorflow/python/platform/default/_flags.py
Очевидно, это tf.app.flags
как-то используется для настройки сети, так почему этого нет в документации API? Кто-нибудь может объяснить, что здесь происходит?
источник
tf.app.run
также не является частью общественного API? Поскольку он полагается наtf.app.flags
общедоступную документацию ( tensorflow.org/api_docs/python/tf/app/run ) и имеет ее , я предполагаю, что она общедоступна и поддерживается. Если его рекомендуется использоватьargparse
, не могли бы вы привести краткий пример рекомендуемого способа его использованияargparse
?tf.app.flags
Модуль представляет собой функциональные возможности, обеспечиваемые Tensorflow реализовать флаги командной строки для вашей программы Tensorflow. Например, код, с которым вы столкнулись, будет делать следующее:Первый параметр определяет имя флага, а второй определяет значение по умолчанию в случае, если флаг не указан при выполнении файла.
Итак, если вы запустите следующее:
тогда скорость обучения устанавливается на 1,00 и останется 0,01, если флаг не указан.
Как упоминалось в этой статье , документы, вероятно, отсутствуют, потому что это может быть то, что Google требует для внутреннего использования разработчиками.
Кроме того, как упоминалось в сообщении, есть несколько преимуществ использования флагов Tensorflow по сравнению с функциональностью флагов, предоставляемой другими пакетами Python, например,
argparse
особенно при работе с моделями Tensorflow, наиболее важным из которых является то, что вы можете предоставить конкретную информацию Tensorflow в код, такую как информация о том, какой GPU использовать.источник
В Google они используют системы флагов для установки значений по умолчанию для аргументов. Это похоже на argparse. Они используют свою собственную систему флагов вместо argparse или sys.argv.
Источник: Я работал там раньше.
источник
Когда вы используете
tf.app.run()
, вы можете очень удобно передавать переменную между потоками, используяtf.app.flags
. См. Это для дальнейшего использованияtf.app.flags
.источник
После многих попыток я обнаружил, что это печатает все ключи FLAGS, а также фактическое значение -
источник