使用tf.app.run()调用类中main函数报错求助
问题修复:使用
tf.app.run()调用类中main函数的错误解决 首先看你的代码里存在几个明显的问题,导致运行出错,我来逐一帮你修正:
错误点1:未完成的入口语句
你的代码最后一行if __name__...是不完整的,这会直接触发语法错误。必须补全为标准的Python程序入口语句,才能让tf.app.run()正确执行。
错误点2:访问FLAGS私有属性
FLAGS.__flag.iteritems()是在访问TensorFlow Flags模块的私有内部属性(Python中双下划线开头的成员是约定的私有成员),这种写法既不符合编码规范,还会触发属性访问错误。我们应该使用官方提供的公开API来获取FLAGS的键值对。
修正后的完整代码
import tensorflow as tf import sys # 定义命令行参数 tf.app.flags.DEFINE_string('f1', '', 'feature 1') tf.app.flags.DEFINE_string('f2', '', 'feature 2') FLAGS = tf.app.flags.FLAGS class Test(object): def __init__(self): pass def main(self, args): # 使用公开API获取所有flag的键值对 print("所有flag参数:", FLAGS.flag_values_dict()) # 也可以单独访问某个指定的flag print("f1的值:", FLAGS.f1) print("f2的值:", FLAGS.f2) def main(args): test = Test() test.main(args) if __name__ == '__main__': # 启动TensorFlow的app运行入口,默认调用全局的main函数 tf.app.run()
补充优化方案
如果不想写全局的main函数,也可以直接把类实例的main方法传给tf.app.run(),简化代码:
if __name__ == '__main__': test = Test() tf.app.run(main=test.main)
内容的提问来源于stack exchange,提问作者Yaser Kenesh
相关产品推荐
相关产品推荐

