tensorflow中程序执行入口tf.app.run()的应用

在代码中,tf.app.run()常写为入口,如下:

...
# 此处省略n行代码
...
def main(_):
    ...
if __name__ == "__main__":

    tf.app.run()

好,那我们进入tf.app.run()的函数,康康长什么样子。

@tf_export(v1=['app.run'])
def run(main=None, argv=None):
  """Runs the program with an optional 'main' function and 'argv' list."""
  main = main or _sys.modules['__main__'].main

图片[1]-tensorflow中程序执行入口tf.app.run()的应用-唐朝资源网

_run(main=main, argv=argv, flags_parser=_parse_flags_tolerate_undef)

从这个角度来看,应该输入一个函数对象作为程序运行的参数。如果没有输入函数,会使用默认的_sys.[‘main’].main,然后会构建两个测试文件,看看运行中_sys.[‘main’]的结果是什么执行模块从其他模块导入的函数

# file1
import sys as _sys
def run():
    print(_sys.modules['__main__'])
    print(_sys.modules['__main__'].main)

图片[2]-tensorflow中程序执行入口tf.app.run()的应用-唐朝资源网

# file2
from file1 import run
def main(_):
    pass

if __name__ == '__main__':
    run()

run函数中pirnt的结果是:

main’ 来自 ‘D:/data//demo/file2.py’>

可以看出tf.app.run函数中的默认函数是file2中的main函数对象。 main函数不是main时为test,需要将test函数作为参数传入tf.app.run()。如下

...
# 此处省略n行代码
...

图片[3]-tensorflow中程序执行入口tf.app.run()的应用-唐朝资源网

def test(_): # 主函数 ... if __name__ == "__main__": tf.app.run(test)

需要注意的是,使用tf.app.run作为入口时,main函数至少需要一个参数。常用的写法是将_作为参数,写成main(_),防止出错。如果不加参数,会报:main() take 0 but 1 was given

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片