gpt4 book ai didi

python - tf.app.run() 是如何工作的?

转载 作者:IT老高 更新时间:2023-10-28 12:31:22 27 4
gpt4 key购买 nike

tf.app.run() 如何在 Tensorflow 翻译演示中工作?

tensorflow/models/rnn/translate/translate.py 中,有一个对 tf.app.run() 的调用。它是如何处理的?

if __name__ == "__main__":
tf.app.run()

最佳答案

if __name__ == "__main__":

表示当前文件在 shell 下执行,而不是作为模块导入。

tf.app.run()

你可以通过文件app.py

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

# Extract the args from the optional `argv` list.
args = argv[1:] if argv else None

# Parse the known flags from that list, or from the command
# line otherwise.
# pylint: disable=protected-access
flags_passthrough = f._parse_flags(args=args)
# pylint: enable=protected-access

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

# Call the main function, passing through any arguments
# to the final program.
sys.exit(main(sys.argv[:1] + flags_passthrough))

让我们逐行分解:

flags_passthrough = f._parse_flags(args=args)

这确保您通过命令行传递的参数是有效的,例如python my_model.py --data_dir='...' --max_iteration=10000 其实这个特性是基于python标准的argparse模块实现的。

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

=右侧的第一个main是当前函数run(main=None, argv=None)的第一个参数.而 sys.modules['__main__'] 表示当前正在运行的文件(例如 my_model.py)。

所以有两种情况:

  1. 你在 my_model.py 中没有 main 函数那么你必须调用 tf.app.run(my_main_running_function)

  2. 您在 my_model.py 中有一个 main 函数。 (大部分情况都是这样。)

最后一行:

sys.exit(main(sys.argv[:1] + flags_passthrough))

确保您的 main(argv)my_main_running_function(argv) 函数被正确地使用已解析的参数调用。

关于python - tf.app.run() 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33703624/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com