TensorFlow'da tf.app.flags'ın amacı nedir?


115

Tensorflow'da bazı örnek kodlar okuyorum, aşağıdaki kodu buldum

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

içinde tensorflow/tensorflow/g3doc/tutorials/mnist/fully_connected_feed.py

Ancak bu kullanımıyla ilgili herhangi bir belge bulamıyorum tf.app.flags.

Ve bu bayrakların uygulamasının tensorflow/tensorflow/python/platform/default/_flags.py

Açıkçası, bu tf.app.flagsbir şekilde bir ağı yapılandırmak için kullanılıyor, öyleyse neden API belgelerinde yok? Burada neler olduğunu kimse açıklayabilir mi?

Yanıtlar:


110

tf.app.flagsModül anda etrafında ince bir sarıcı nedenle, piton-gflags bu proje için belgeler nasıl kullanılacağı için en iyi kaynaktır argparse işlevselliği bir alt kümesini olan python-gflags.

Bu modülün şu anda demo uygulamaları yazmak için bir kolaylık olarak paketlendiğini ve teknik olarak genel API'nin bir parçası olmadığını, bu nedenle gelecekte değişebileceğini unutmayın.

Kendi bayrak çözümlemenizi kullanarak argparseveya tercih ettiğiniz kitaplığı uygulamanızı öneririz .

DÜZENLEME:tf.app.flags modül kullanılarak uygulanan aslında değil python-gflagsama benzer bir API kullanır.


80
"demo uygulamaları yazmak için bir kolaylık olarak paketlenmiştir ve teknik olarak genel AP'nin bir parçası değildir" ... hemen hemen her öğreticide kullanılması biraz garip, ancak üzerinde herhangi bir belge yok. Bolca kafa karışıklığına yol açar.
uçak

2
Bir TensorFlow modeline argümanları geçmek ve bulut için bir Python modülü içine paketlemek nasıl argparse nasıl kullanılacağına ilişkin iyi bir örnek için bkz task.py içinde taxifare bir bölümünü kapsayan modül eğitim-veri-analisti ders materyalleri .
charlesreid1

3
tf.app.runortak API parçası olmayan da? O dayandığından tf.app.flagsve kamu belgelerine sahiptir ( tensorflow.org/api_docs/python/tf/app/run ben kamu ve desteklenen olduğunu varsayalım böylece). argparseBunun yerine kullanılması tavsiye edilirse , birlikte kullanılması önerilen yolla ilgili kısa bir örnek verebilir misiniz argparse?
naktinis

6
belgelendirme tensorflow'daki her şey için bir sorun değildir.
deadcode

37

tf.app.flagsModül Tensorflow program için komut satırı bayrakları uygulamaya Tensorflow tarafından sağlanan bir işlevdir. Örnek olarak, karşılaştığınız kod şunları yapacaktır:

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

İlk parametre bayrağın adını, ikincisi ise dosya yürütülürken bayrağın belirtilmemesi durumunda varsayılan değeri tanımlar.

Yani aşağıdakileri çalıştırırsanız:

$ python fully_connected_feed.py --learning_rate 1.00

daha sonra öğrenme hızı 1.00 olarak ayarlanır ve bayrak belirtilmezse 0.01 olarak kalır.

Bu makalede belirtildiği gibi , bu , Google'ın geliştiricilerinin kullanması için dahili olarak gerektirdiği bir şey olabileceğinden, dokümanlar muhtemelen mevcut değildir.

Ayrıca, yazıda belirtildiği gibi, Tensorflow bayraklarını kullanmanın, argparseözellikle Tensorflow modelleriyle uğraşırken olduğu gibi, diğer Python paketleri tarafından sağlanan bayrak işlevine göre çeşitli avantajları vardır ; en önemlisi, koda Tensorflow'a özel bilgiler gibi bilgiler sağlayabilmenizdir. hangi GPU'nun kullanılacağı hakkında.


1
üçüncü parametre ne diyor? muhtemelen küçük bir doc string gibi. Yanılıyorsam bilmek isterim.
shivam13juna

Evet, muhtemelen budur. Şimdiye kadar bunun pratik bir kullanımını görmedim, bu yüzden sanırım anlayışınız için bu.
Vedang Waradpande

11

Google'da, bağımsız değişkenler için varsayılan değerleri ayarlamak için bayrak sistemlerini kullanırlar. Argparse'a benzer. Argparse veya sys.argv yerine kendi bayrak sistemlerini kullanırlar.

Kaynak: Daha önce orada çalıştım.


5

Eğer kullandığınız zaman tf.app.run(), kullandığınız parçacıkları arasında çok uygun değişkeni aktarabilirsiniz tf.app.flags. Bkz bu daha da kullanım için tf.app.flags.


4

Birçok kez denedikten sonra bunu tüm BAYRAKLAR anahtarının yanı sıra gerçek değeri yazdırmak için buldum -

for key in tf.app.flags.FLAGS.flag_values_dict():

  print(key, FLAGS[key].value)

3
BAYRAKLAR [anahtar] demek istiyorsun
physincubus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.