Saya membaca beberapa kode contoh di Tensorflow, saya menemukan kode berikut
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.')
di tensorflow/tensorflow/g3doc/tutorials/mnist/fully_connected_feed.py
Tetapi saya tidak dapat menemukan dokumen apa pun tentang penggunaan tf.app.flags
.
Dan saya menemukan implementasi dari flag ini di
tensorflow/tensorflow/python/platform/default/_flags.py
Jelas, ini tf.app.flags
entah bagaimana digunakan untuk mengonfigurasi jaringan, jadi mengapa tidak ada di dokumen API? Adakah yang bisa menjelaskan apa yang terjadi di sini?
sumber
tf.app.run
juga bukan bagian dari API publik? Karena mengandalkantf.app.flags
dan memiliki dokumentasi publik ( tensorflow.org/api_docs/python/tf/app/run ), jadi saya menganggapnya publik dan didukung. Jika lebih disarankan untuk digunakanargparse
, dapatkah Anda memberikan contoh singkat cara penggunaan yang disarankan denganargparse
?The
tf.app.flags
modul adalah fungsi yang disediakan oleh Tensorflow untuk melaksanakan bendera baris perintah untuk program Tensorflow Anda. Sebagai contoh, kode yang Anda temukan akan melakukan hal berikut:Parameter pertama mendefinisikan nama bendera sedangkan yang kedua mendefinisikan nilai default jika bendera tidak ditentukan saat menjalankan file.
Jadi jika Anda menjalankan yang berikut ini:
maka kecepatan pemelajaran disetel ke 1,00 dan akan tetap 0,01 jika bendera tidak ditentukan.
Seperti yang disebutkan dalam artikel ini , dokumen mungkin tidak ada karena ini mungkin sesuatu yang Google perlukan secara internal untuk digunakan oleh pengembangnya.
Selain itu, seperti yang disebutkan di postingan, ada beberapa keuntungan menggunakan flag Tensorflow dibandingkan fungsi flag yang disediakan oleh paket Python lain seperti
argparse
terutama saat menangani model Tensorflow, yang terpenting adalah Anda dapat memberikan informasi spesifik Tensorflow ke kode seperti informasi tentang GPU mana yang akan digunakan.sumber
Di Google, mereka menggunakan sistem bendera untuk menyetel nilai default untuk argumen. Ini mirip dengan argparse. Mereka menggunakan sistem bendera mereka sendiri, bukan argparse atau sys.argv.
Sumber: Saya pernah bekerja di sana sebelumnya.
sumber
Saat Anda menggunakan
tf.app.run()
, Anda dapat mentransfer variabel dengan sangat nyaman di antara utas menggunakantf.app.flags
. Lihat ini untuk penggunaan lebih lanjuttf.app.flags
.sumber
Setelah mencoba berkali-kali saya menemukan ini untuk mencetak semua kunci BENDERA serta nilai sebenarnya -
sumber