1. 程式人生 > >TensorFlow 中 tf.app.flags.FLAGS 的用法介紹

TensorFlow 中 tf.app.flags.FLAGS 的用法介紹

下面介紹 tf.app.flags.FLAGS 的使用,主要是在用命令列執行程式時,需要傳些引數,程式碼如下:

新建一個名為:app_flags.py 的檔案。

#coding:utf-8

# 學習使用 tf.app.flags 使用,全域性變數
# 可以再命令列中執行也是比較方便,如果只寫 python app_flags.py 則程式碼執行時預設程式裡面設定的預設設定
# 若 python app_flags.py --train_data_path <絕對路徑 train.txt> --max_sentence_len 100
#    --embedding_size 100 --learning_rate 0.05  程式碼再執行的時候將會按照上面的引數來執行程式

import tensorflow as tf

FLAGS = tf.app.flags.FLAGS

# tf.app.flags.DEFINE_string("param_name", "default_val", "description")
tf.app.flags.DEFINE_string("train_data_path", "/home/yongcai/chinese_fenci/train.txt", "training data dir")
tf.app.flags.DEFINE_string("log_dir", "./logs", " the log dir")
tf.app.flags.DEFINE_integer("max_sentence_len", 80, "max num of tokens per query")
tf.app.flags.DEFINE_integer("embedding_size", 50, "embedding size")

tf.app.flags.DEFINE_float("learning_rate", 0.001, "learning rate")


def main(unused_argv):
    train_data_path = FLAGS.train_data_path
    print("train_data_path", train_data_path)
    max_sentence_len = FLAGS.max_sentence_len
    print("max_sentence_len", max_sentence_len)
    embdeeing_size = FLAGS.embedding_size
    print("embedding_size", embdeeing_size)
    abc = tf.add(max_sentence_len, embdeeing_size)

    init = tf.global_variables_initializer()

    #with tf.Session() as sess:
        #sess.run(init)
        #print("abc", sess.run(abc))

    sv = tf.train.Supervisor(logdir=FLAGS.log_dir, init_op=init)
    with sv.managed_session() as sess:
        print("abc:", sess.run(abc))

        # sv.saver.save(sess, "/home/yongcai/tmp/")


# 使用這種方式保證了,如果此檔案被其他檔案 import的時候,不會執行main 函式
if __name__ == '__main__':
    tf.app.run()   # 解析命令列引數,呼叫main 函式 main(sys.argv)


呼叫方法:

其中引數可以根據需求進行修改。

python app_flags.py --train_data_path <絕對路徑 train.txt> --max_sentence_len 100 --embedding_size 100 --learning_rate 0.05

如果這樣呼叫:
python app_flags.py

則會執行程式時會自動呼叫程式中 default 中的引數。