在misc_fun.py
文件中定义了以下标志,以包含计算机和目录信息:
import tensorflow as tf
flags = tf.app.flags
FLAGS = flags.FLAGS
# definitions
flags.DEFINE_string(
'DEFAULT_IN',
'~/PycharmProjects/myNN/Data/',
"""Default input folder.""")
...
它在TensorFlow 1.0 - 1.4版本(使用Pycharm)中运行良好。更新到TensorFlow 1.5.-rc0后,发生以下错误:
用法:
from misc_fun import FLAGS
FLAGS.DEFAULT_IN = FLAGS.DEFAULT_DOWNLOAD # change default input folder
错误:
UnparsedFlagAccessError: Trying to access flag --DEFAULT_DOWNLOAD before flags were parsed.
然而print(FLAGS)
工作正常,这给出了:
misc_fun:
--DEFAULT_DOWNLOAD: default download folder for large datasets.
(default: '/home/username/Downloads/Data/')
--DEFAULT_IN: default input folder.
(default: '~/PycharmProjects/myNN/Data/')
...
我尝试FLAGS = flags.FLAGS(sys.argv)
,导致以下错误:
UnrecognizedFlagError: Unknown command line flag 'f'
虽然有一个使用类对象的解决方法,但我想知道这里可能出现什么问题。
答案 0 :(得分:4)
使用1.5.0-rc0时,Tensorflow维护人员已将tf.app.flags从abseil切换到flags模块。不幸的是,它与先前的实现不是100%API兼容。我用
之类的东西解决了你的问题remaining_args = FLAGS([sys.argv[0]] + [flag for flag in sys.argv if flag.startswith("--")])
assert(remaining_args == [sys.argv[0]])
在第一次访问FLAGS对象之前。
答案 1 :(得分:3)
我尝试在下面添加以下行。
tf.app.flags.DEFINE_string('f','','内核')
此解决方案与其他解决方案的不同之处在于它简单易用。您只需要将此添加到代码中,就不会更改您的系统。请让我知道该解决方案是否有助于解决其他人的问题。
此解决方案的参考来自一个中文网站:https://blog.csdn.net/qq_39956625/article/details/80500291
答案 2 :(得分:0)
或者,您可以使用FLAGS(sys.argv, known_only=True)
来解析所有相关标志(使用tf.app.flags.DEFINE_xxx定义的标志)。这将释放任何其他未知的args。如果您有一些与TF无关的命令行参数,则非常有用。