项目代码中参数的管理:mmcv中的Config包&argparse导入参数

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)

也可以直接调用到函数里!全局变量很方便使用!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来包番茄沙司

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值