Czytam przykładowe kody w Tensorflow, znalazłem następujący kod
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.')
w tensorflow/tensorflow/g3doc/tutorials/mnist/fully_connected_feed.py
Ale nie mogę znaleźć żadnych dokumentów dotyczących tego użycia tf.app.flags
.
I znalazłem implementację tych flag w
tensorflow/tensorflow/python/platform/default/_flags.py
Oczywiście tf.app.flags
jest to w jakiś sposób używane do konfigurowania sieci, więc dlaczego nie ma tego w dokumentacji API? Czy ktoś może wyjaśnić, co się tutaj dzieje?
źródło
tf.app.run
również nie jest częścią publicznego interfejsu API? Ponieważ opiera siętf.app.flags
i ma publiczną dokumentację ( tensorflow.org/api_docs/python/tf/app/run ), więc zakładam, że jest publiczna i obsługiwana. Jeśliargparse
zamiast tego zaleca się użycie , czy możesz podać krótki przykład zalecanego sposobu korzystania z niegoargparse
?tf.app.flags
Moduł jest funkcjonalność zapewnia Tensorflow wdrożyć flagi wiersza poleceń dla programu Tensorflow. Na przykład, napotkany kod wykonałby następujące czynności:Pierwszy parametr określa nazwę flagi, podczas gdy drugi definiuje wartość domyślną w przypadku, gdy flaga nie zostanie określona podczas wykonywania pliku.
Więc jeśli uruchomisz następujące:
wtedy współczynnik uczenia się jest ustawiony na 1,00 i pozostanie 0,01, jeśli flaga nie zostanie określona.
Jak wspomniano w tym artykule , dokumenty prawdopodobnie nie są obecne, ponieważ może to być coś, czego Google wymaga wewnętrznie, aby mogli z niego korzystać programiści.
Ponadto, jak wspomniano w poście, istnieje kilka zalet używania flag Tensorflow w porównaniu z funkcjonalnością flag dostarczaną przez inne pakiety Pythona, na przykład
argparse
szczególnie w przypadku modeli Tensorflow, z których najważniejszą jest to, że możesz dostarczyć do kodu specyficzne informacje Tensorflow, takie jak informacje o tym, którego GPU użyć.źródło
W Google używają systemów flag do ustawiania domyślnych wartości argumentów. Jest podobny do argparse. Używają własnego systemu flag zamiast argparse lub sys.argv.
Źródło: wcześniej tam pracowałem.
źródło
Kiedy używasz
tf.app.run()
, możesz bardzo wygodnie przenosić zmienną między wątkami za pomocątf.app.flags
. Zobacz to do dalszego wykorzystaniatf.app.flags
.źródło
Po wielu próbach znalazłem to, aby wydrukować wszystkie klucze FLAGS, a także rzeczywistą wartość -
źródło