在字典中使用 ArgumentParser 保存参数

saving arguments with ArgumentParser in a dictionary

我从命令行获取不同的参数:

def get_args():
    parser = ArgumentParser(description='neural network project')
    parser.add_argument('--epochs', type=int, default=150)
    parser.add_argument('--decay_epoch', type=int, default=100)
    parser.add_argument('--batch_size', type=int, default=1)
    parser.add_argument('--lr', type=float, default=.0002)
    parser.add_argument('--load_height', type=int, default=286)
    parser.add_argument('--load_width', type=int, default=286)
    args = parser.parse_args()
    return args

我想将从 get_args 获得的所有参数保存在字典中(然后保存在文件 .json 或 .txt 中)。

创建字典并通过解析器关键字添加它们。

neural_dict = {}
neural_dict['EPOCHS'] = args.epochs
neural_dict['DECAY_EPOCH'] = args.decay_epoch
.
.
.

要使用 for 循环添加到字典:

neural_dict = {}
parser = argparse.ArgumentParser(description='neural network project')
parser.add_argument('--epochs', type=int, default=150)
parser.add_argument('--decay_epoch', type=int, default=100)
parser.add_argument('--batch_size', type=int, default=1)
parser.add_argument('--lr', type=float, default=.0002)
parser.add_argument('--load_height', type=int, default=286)
parser.add_argument('--load_width', type=int, default=286)
args = parser.parse_args()

#chepner is right...use his method instead
neural_dict = vars(args)

argparse.ArgumentParser.parse_args returns 一个 argparse.Namespace 对象,它很容易变成字典。直接来自 documentation:

This class is deliberately simple, just an object subclass with a readable string representation. If you prefer to have dict-like view of the attributes, you can use the standard Python idiom, vars():

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo')
>>> args = parser.parse_args(['--foo', 'BAR'])
>>> vars(args)
{'foo': 'BAR'}