Config
当我们项目的超参数很多时,在文中设定和修改并不方便,这时我们需要项目中所有参数放入一个文件夹中,方便管理和修改。例如
./config/config.py中包含了我们模型需要的所有参数
然后我们使用mmcv包中的Config函数对这个参数进行调用即可使用!
cfg = Config.fromfile('./config/config.py')
print(cfg.PARA.SFLA_params.model_name)
#输出 ’01PSO‘
argparse模块
argparse是一个Python模块:命令行选项、参数和子命令解析器
argparse模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数。然后argparser将弄清如何从sys.argv解析出那些参数。argparse模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。
我们常常可以把argparse的使用简化成下面四个步骤:
①导入模块
import argparse
②创建一个解释器对象parser=argparse.ArgumentParser()
parser = argparse.ArgumentParser(description='Process some intergers.')
ArgumentParser对象包含将命令行解析成Python数据类型所需的全部信息。
参数信息包括:
prog - 程序的名称(默认: sys.argv[0],prog猜测是programma的缩写)
usage - 描述程序用途的字符串(默认值:从添加到解析器的参数生成)
description - 在参数帮助文档之后显示的文本 (默认值:无)
③parser.add_argument()
向该对象中添加你要关注的命令行参数和选项
parser.add_argument('integers', metavar='N', type=int, nargs='+', help = 'an integer for the accumulator')`
给一个ArgumentParser添加程序阐述信息是通过调用add_arguement()方法完成的。
add_argument()方法:
name or flags - 一个命名或者一个选项字符串的列表
action - 表示该选项要执行的操作
default - 当参数未在命令行中出现时使用的值
dest - 用来指定参数的位置
type - 为参数类型,例如int
choices - 用来选择输入参数的范围。例如choice = [1, 5, 10], 表示输入参数只能为1,5 或10
help - 用来描述这个选项的作用
④parser.parse_args()
调用parse_args()方法进行解析,解析成功之后即可使用args调用参数值。
args = parser.parse_args()
Config包&argparse结合实战
import argparse
from mmcv import Config
def parser():
parse = argparse.ArgumentParser(description='Pytorch Cifar10 Training')
parse.add_argument('--config','-c',default='./config/config.py',help='config file path')
parse.add_argument('--ModelParams_H', '-mh', type=int, help='The highest model params')
parse.add_argument('--ModelParams_L', '-ml', type=int, help='The lowest model params')
parse.add_argument('--dataset', '-d', type=str, default='cifar10', help='Select the train dataset, \'mnist\' or \'cifar10\'')
parse.add_argument('--evaluation', '-e', type=str, default='sur', help='Select the way of elaluation, \'sur\' or \'real\'')
args = parse.parse_args()
return args
args = parser()
cfg = Config.fromfile(args.config)
print(args.dataset) #输出cifar10【默认】
print(cfg.PARA.SFLA_params.gens) #输出20
对项目中参数cfg的修改直接在./config/config.py文件中进行修改,也可以对args中参数值进行代码修改
args.ModelParams_L, args.ModelParams_H = 1, 3
此时调用和修改args和cfg就很方便了!
ASA(args=args, cfg=cfg,train_loader = train_loader, valid_loader=valid_loader)
也可以直接调用到函数里!全局变量很方便使用!