zoukankan      html  css  js  c++  java
  • 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



  • 相关阅读:
    LOJ #3219. 「PA 2019」Iloczyny Fibonacciego (斐波拉契表示性质+FFT)
    一类区间修改问题的做法
    [百炼智能]hihoCoder挑战赛37 D Items(树状数组维护01背包—梦想成真!!!)
    LOJ #2092. 「ZJOI2016」大森林(lct)
    LOJ #3220. 「PA 2019」Terytoria(随机染色或线段树)
    Codeforces 223E. Planar Graph(平面图)
    JZOJ 6678. 【2020.05.01省选模拟】苏菲的世界 (simpson积分+几何法求多个圆的并的面积)
    Day3-Python基础3---函数介绍
    Day2-Python基础2---字符编码与转码
    Day2-Python基础2---集合和文件操作
  • 原文地址:https://www.cnblogs.com/marsggbo/p/9719580.html
Copyright © 2011-2022 走看看