TensorFlow tf.app&tf.app.flags用法介紹


TensorFlow tf.app&tf.app.flags用法介紹

tf.app.flags

下面介紹 tf.app.flags.FLAGS的使用,主要是在用命令行執行程序時,需要傳些參數,其實也就可以理解成對argparse庫進行的封裝,示例代碼如下

  1. #coding:utf-8 
  2.  
  3. # 學習使用 tf.app.flags 使用,全局變量 
  4. # 可以再命令行中運行也是比較方便,如果只寫 python app_flags.py 則代碼運行時默認程序里面設置的默認設置 
  5. # 若 python app_flags.py --train_data_path <絕對路徑 train.txt> --max_sentence_len 100 
  6. # --embedding_size 100 --learning_rate 0.05 代碼再執行的時候將會按照上面的參數來運行程序 
  7.  
  8. import tensorflow as tf 
  9.  
  10. FLAGS = tf.app.flags.FLAGS 
  11.  
  12. # tf.app.flags.DEFINE_string("param_name", "default_val", "description") 
  13. tf.app.flags.DEFINE_string("train_data_path", "/desktop/train.txt", "training data dir"
  14. tf.app.flags.DEFINE_string("log_dir", "./logs", " the log dir"
  15. tf.app.flags.DEFINE_integer("max_sentence_len", 80, "max num of tokens per query"
  16. tf.app.flags.DEFINE_integer("embedding_size", 50, "embedding size"
  17.  
  18. tf.app.flags.DEFINE_float("learning_rate", 0.001, "learning rate"
  19.  
  20.  
  21. def main(unused_argv): 
  22. train_data_path = FLAGS.train_data_path 
  23. print("train_data_path", train_data_path) 
  24. print("*" * 30
  25. max_sentence_len = FLAGS.max_sentence_len 
  26. print("max_sentence_len", max_sentence_len) 
  27. print("*" * 30
  28. embdeeing_size = FLAGS.embedding_size 
  29. print("embedding_size", embdeeing_size) 
  30. print("*" * 30
  31. abc = tf.add(max_sentence_len, embdeeing_size) 
  32.  
  33. init = tf.global_variables_initializer() 
  34.  
  35. with tf.Session() as sess: 
  36. sess.run(init) 
  37. print("abc", sess.run(abc)) 
  38.  
  39. # 使用這種方式保證了,如果此文件被其他文件 import的時候,不會執行main 函數 
  40. if __name__ == '__main__'
  41. tf.app.run() # 解析命令行參數,調用main 函數 main(sys.argv) 
  42.  
  43.  

兩種調用方式:

方式一:

  1. python tf_app_flag.py 

結果如下:

方式二:

  1. python app_flags.py --train_data_path ./test.py --max_sentence_len 100 --embedding_size 100 --learning_rate 0.05 
  2.  

tf.app.run()

該函數一般都是出現在這種代碼中:

  1. if __name__ == '__main__'
  2. tf.app.run() 

上述第一行代碼表示如果當前是從其它模塊調用的該模塊程序,則不會運行main函數!而如果就是直接運行的該模塊程序,則會運行main函數。

具體第二行的功能從源碼開始分析,源碼如下:

flags_passthrough=f._parse_flags(args=args)這里的parse_flags就是我們tf.app.flags源碼中用來解析命令行參數的函數。所以這一行就是解析參數的功能;

下面兩行代碼也就是tf.app.run的核心意思:執行程序中main函數,並解析命令行參數!


參考:



MARSGGBO原創





2018-8-5




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM