我使用tf.app.flags
和argparse
编写了代码
flags = tf.app.flags
FLAGS = flags.FLAGS
flags.DEFINE_integer('hidden1', 16, 'Number of units in hidden layer 1.')
flags.DEFINE_integer('hidden2', 16, 'Number of units in hidden layer 2.')
parser = argparse.ArgumentParser(description='Single Deep GCNN 11, 22 and 33!', allow_abbrev=False)
parser.add_argument('--fc-neuron', type=int, default=64)
parser.add_argument('--num-epochs', type=int, default=10000, help='the number of training epochs')
在其他文件中,我使用FLAGS
来获取一些参数,但是,我得到了错误
absl.flags._exceptions.UnrecognizedFlagError: Unknown command line flag 'fc-neuron'
如何解决此冲突?
答案 0 :(得分:0)
因此,在使用 absl.flags
时,argparse
不太合作(至少对于我在 2021 年仍然必须使用的版本)。
找到的解决方法是让 FLAGS 在未知参数上优雅地失败,然后解析您的参数:
import argparse
from absl import flags
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--imput_path', type=str)
parser.add_argument('-o', '--output_path', type=str)
if __name__ == "__main__":
FLAGS = flags.FLAGS
try:
argv = FLAGS(sys.argv, known_only=True) # parse flags
except flags.Error, e:
logger.error('%s\nUsage: %s ARGS\n%s' % (e, sys.argv[0], FLAGS))
sys.exit(1)
args, _ = parser.parse_known_args()