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
)。
因此有两种情况:
您在
my_model.py
没有main
功能,那么您必须调用tf.app.run(my_main_running_function)
您在
my_model.py
有一个main
功能。 (通常是这种情况。)
最后一行:
sys.exit(main(sys.argv[:1] + flags_passthrough))
确保使用解析后的参数正确调用main(argv)
或my_main_running_function(argv)
函数。
0
tf.app.run()
如何翻译演示?在
tensorflow/models/rnn/translate/translate.py
,有一个对tf.app.run()
的调用。如何处理?