tf.app.flags和tf.app.run的使用
阿新 • • 發佈:2018-11-12
tf.app.flags
和tf.app.run
的使用
tf.app.flags主要用於處理命令列引數的解析工作,其實可以理解為一個封裝好了的argparse包(argparse是一種結構化的資料儲存格式,類似於Json、XML)。
我們通過tf.app.flags來呼叫這個flags.py檔案,這樣我們就可以用flags.DEFINE_interger/float()來新增命令列引數,而FLAGS=flags.FLAGS可以例項化這個解析引數的類從對應的命令列引數取出引數。
新建test.py檔案,並輸入如下程式碼,程式碼的功能是建立幾個命令列引數,然後把命令列引數輸出顯示
import tensorflow as tf flags = tf.app.flags flags.DEFINE_string('data_dir', '/tmp/mnist', 'Directory with the MNIST data.') flags.DEFINE_integer('batch_size', 5, 'Batch size.') flags.DEFINE_integer('num_evals', 1000, 'Number of batches to evaluate.') FLAGS = flags.FLAGS print(FLAGS.data_dir, FLAGS.batch_size, FLAGS.num_evals)
· 在命令列中輸入test.py -h就可以檢視幫助資訊,也就是Directory with the MNIST data.,Batch size和Number of batches to evaluate這樣的訊息。
· 在命令列中輸入test.py --batchsize 10就可以將batch_size的值修改為10!
tf.app.run()
該函式一般都是出現在這種程式碼中:
import tensorflow as tf flags = tf.flags flags.DEFINE_string('str_name', 'hjd', 'str_vale') flags.DEFINE_integer('int_name', 200, 'int_value') flags.DEFINE_bool('bool_name', False, 'bool_value') flags = flags.FLAGS
#必須帶引數,否則:'TypeError: main() takes no arguments (1 given)';
#main的引數名隨意定義,無要求
def main(agr_123):
print(flags.str_name)
print(flags.int_name)
print(flags.bool_name)
if __name__ == '__main__':
tf.app.run()#執行main函式
上述第一行程式碼表示如果當前是從其它模組呼叫的該模組程式,則不會執行main函式!而如果就是直接執行的該模組程式,則會執行main函式。