tensorflow函数tf.app.run()参数

致谢:

https://stackoverflow.com/questions/33703624/how-does-tf-app-run-work

https://blog.csdn.net/Suan2014/article/details/76269241

https://blog.csdn.net/fxjzzyo/article/details/80466321

 

1 形式

if __name__ == '__main__':

    tf.app.run()

2关于if __name__ == '__main__':

该语句经常用于自测试。

__name__有两种情况:

为了方便描述将所在文件名定为my_model.py。

1)当该文件直接运行时,例如执行

python my_model.py

__name__数值是__main__,因此会执行if内的语句

2)当该文件以模块形式导入时,例如执行:

import my_model

__name__数值是my_model,因此不会执行if内的语句

 

3关于 tf.app.run()

run源码:

def run(main=None, argv=None):
  """Runs the program with an optional 'main' function and 'argv' list."""

  # Define help flags.
  _define_help_flags()

  # Parse known flags.
  argv = flags.FLAGS(_sys.argv if argv is None else argv, known_only=True)

  main = main or _sys.modules['__main__'].main

  # Call the main function, passing through any arguments
  # to the final program.
  _sys.exit(main(argv))

其中语句:

main = main or sys.modules['__main__'].main

The first main in right side of = is the first argument of current function run(main=None, argv=None) . While sys.modules['__main__'] means current running file(e.g. my_model.py).

即run的main如果有参数传入则执行传入参数,如果没有传入则默认在my_model.py中找main执行。

如果my_model.py中即没有main,有不传入参数,则run会报错。

 

使用

有两种情况:

  • 如果代码中的入口函数叫main(),则你就可以把入口写成tf.app.run(),相当于将tf.app.run(main)中的main参数不传入,缺省情况下run函数找文件中的main执行;
  • 如果代码中的入口函数不叫main(),而是一个其他名字的函数,如test(),则你应该这样写入口tf.app.run(test)

也可以参数显式赋值使用:

import tensorflow as tf
#导入命令行解析模块
import argparse
import sys
 
FLAGS=None
def main(_):
    print(sys.argv[0])
 
if __name__=="__main__":
    #创建对象
    parse=argparse.ArgumentParser()
    #增加命令行
    parse.add_argument('--dataDir',type=str,default='\\tmp\\tensorflow\\mnist\\inputData',
                    help='Directory for string input data')
    FLAGS, unparsed=parse.parse_known_args()
    tf.app.run(main=main, argv=[sys.argv[0]] + unparsed) #解析命令行参数,调用main函数 main(sys.argv)
 

 

4命令行参数:tf.app.flags.DEFINE_xxx

简单易懂有示例:

https://blog.csdn.net/dcrmg/article/details/79658725

tf 中定义了 tf.app.flags.FLAGS ,用于接受从终端传入的命令行参数。例如:

单步执行,可以观察到文件执行的顺序:

1)单行变量操作:flag创建等;

2)函数只执行def声明行,不执行函数内容;

3)如果有if __name__ == '__main__',根据条件执行。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值