json和argparse互相转换
有时候需要将训练的参数保存到文件,方便复现的时候直接加载。可以保存为json文件,这样方便不同的语言加载,和直接用肉眼查看。
保存参数:
import json
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--seed', type=int, default=98, help='seed')
parser.add_argument('--epoch', type=int, default=100, help='epoch')
args = parser.parse_args()
with open('./test_arg.json', 'wt') as f:
json.dump(vars(args), f, indent=4). # indent意思就是json格式缩进4个space,便于肉眼查看
加载参数:
args = argparse.ArgumentParser()
args_dict = vars(args)
with open('./test_arg.json', 'rt') as f:
args_dict.update(json.load(f))
print(args.seed)
当然也可以用yaml或者pickle,本质就是argparse保存了一个dict,只要将保存和加载的对象用于更新这个dict即可。