tf.app.run()出现AttributeError: 'module' object has no attribute 'main'错误

17

我想测试一个简短的程序,它非常简单,如下所示:

import numpy as np
import tensorflow as tf    
flags = tf.app.flags
FLAGS = flags.FLAGS    
import tensorvision.train as train
import tensorvision.utils as utils    
flags.DEFINE_string('name', None,
                    'Append a name Tag to run.')

flags.DEFINE_string('hypes', 'hypes/medseg.json',
                    'File storing model parameters.')    
if __name__ == '__main__':
    tf.app.run()

然而,运行该程序会出现以下错误信息:

Traceback (most recent call last):
File "train.py", line 43, in <module>
  tf.app.run()
File "/devl/tensorflow/tf_0.12/lib/python3.4/site-  packages/tensorflow/python/platform/app.py", line 39, in run
main = main or sys.modules['__main__'].main
AttributeError: 'module' object has no attribute 'main'

一招致命- 从tensorflow导入tensorflow as tf - Julien
这可能会有所帮助 https://dev59.com/nlsX5IYBdhLWcg3whv3Q#40766480。你可能需要将它指向一个包含main()函数的app.py文件。 - John Morrison
你的文件中有一个名为train.py的文件吗?当你使用import tensorvision.train as train时,这可能会导致问题。 - Abdou
嗨John,我阅读了你发布的链接,但我不清楚如何“将tp指向具有main()的app.py”? - user288609
1个回答

14

你的文件中需要一个 "def main(args)" 函数:

import numpy as np
import tensorflow as tf    
flags = tf.app.flags
FLAGS = flags.FLAGS    
import tensorvision.train as train
import tensorvision.utils as utils    

def main(args):
    flags.DEFINE_string('name', None,
                        'Append a name Tag to run.')

    flags.DEFINE_string('hypes', 'hypes/medseg.json',
                        'File storing model parameters.')    
if __name__ == '__main__':
    tf.app.run()

或者tf.app.run()可以调用外部函数

tf.app.run(my_func)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接