python深度学习标准库使用argparse调参_第1页
python深度学习标准库使用argparse调参_第2页
python深度学习标准库使用argparse调参_第3页
python深度学习标准库使用argparse调参_第4页
python深度学习标准库使用argparse调参_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第python深度学习标准库使用argparse调参目录前言使用步骤:常见规则使用config文件传入超参数argparse中action的可选参数store_true

前言

argparse是深度学习项目调参时常用的python标准库,使用argparse后,我们在命令行输入的参数就可以以这种形式pythonfilename.py--lr1e-4--batch_size32来完成对常见超参数的设置。,一般使用时可以归纳为以下三个步骤

使用步骤:

创建ArgumentParser()对象调用add_argument()方法添加参数使用parse_args()解析参数在接下来的内容中,我们将以实际操作来学习argparse的使用方法

importargparse

parser=argparse.ArgumentParser()#创建一个解析对象

parser.add_argument()#向该对象中添加你要关注的命令行参数和选项

args=parser.parse_args()#调用parse_args()方法进行解析

常见规则

在命令行中输入pythondemo.py-h或者pythondemo.py--help可以查看该python文件参数说明arg字典类似python字典,比如arg字典Namespace(integers=5)可使用arg.参数名来提取这个参数parser.add_argument(integers,type=str,nargs=+,help=传入的数字)nargs是用来说明传入的参数个数,+表示传入至少一个参数,*表示参数可设置零个或多个,表示参数可设置零个或一个parser.add_argument(-n,--name,type=str,required=True,default=,help=名)required=True表示必须参数,-n表示可以使用短选项使用该参数parser.add_argument(--test_action,default=False,action=store_true)store_true触发时为真,不触发则为假(test.py,输出为False,test.py--test_action,输出为True)

使用config文件传入超参数

为了使代码更加简洁和模块化,可以将有关超参数的操作写在config.py,然后在train.py或者其他文件导入就可以。具体的config.py可以参考如下内容。

importargparse

defget_options(parser=argparse.ArgumentParser()):

parser.add_argument('--workers',type=int,default=0,

help='numberofdataloadingworkers,youhadbetterputit'

'4timesofyourgpu')

parser.add_argument('--batch_size',type=int,default=4,help='inputbatchsize,default=64')

parser.add_argument('--niter',type=int,default=10,help='numberofepochstotrainfor,default=10')

parser.add_argument('--lr',type=float,default=3e-5,help='selectthelearningrate,default=1e-3')

parser.add_argument('--seed',type=int,default=118,help="randomseed")

parser.add_argument('--cuda',action='store_true',default=True,help='enablescuda')

parser.add_argument('--checkpoint_path',type=str,default='',

help='Pathtoloadaprevioustrainedmodelifnotempty(defaultempty)')

parser.add_argument('--output',action='store_true',default=True,help="showsoutput")

opt=parser.parse_args()

ifopt.output:

print(f'num_workers:{opt.workers}')

print(f'batch_size:{opt.batch_size}')

print(f'epochs(niters):{opt.niter}')

print(f'learningrate:{opt.lr}')

print(f'manual_seed:{opt.seed}')

print(f'cudaenable:{opt.cuda}')

print(f'checkpoint_path:{opt.checkpoint_path}')

returnopt

if__name__=='__main__':

opt=get_options()

$pythonconfig.py

num_workers:0

batch_size:4

epochs(niters):10

learningrate:3e-05

manual_seed:118

cudaenable:True

checkpoint_path:

随后在train.py等其他文件,我们就可以使用下面的这样的结构来调用参数。

#导入必要库

importconfig

opt=config.get_options()

manual_seed=opt.seed

num_workers=opt.workers

batch_size=opt.batch_size

lr=opt.lr

niters=opt.niters

checkpoint_path=opt.checkpoint_path

#随机数的设置,保证复现结果

defset_seed(seed):

torch.manual_seed(seed)

torch.cuda.manual_seed_all(seed)

random.seed(seed)

np.random.seed(seed)

torch.backends.cudnn.benchmark=False

torch.backends.cudnn.deterministic=True

if__name__=='__main__':

set_seed(manual_seed)

forepochinrange(niters):

train(model,lr,batch_size,num_workers,checkpoint_path)

val(model,lr,batch_size,num_workers,checkpoint_path)

argparse中action的可选参数store_true

#test.py

importargparse

if__name__=='__main__':

parser=argparse.ArgumentParser()

parser.add_argument("--test_action",action='store_true')

args=parser.parse_args()

action_val=args.test_action

print(action_val)

以上面的代码为例,若触发test_action,则为True,否则为False:

$pythontest.py,输出为False$pythontest.py--test_action,输出为True

若在上面的代码中加入default,设为False时:

parser.add_argument("--test_action",default='False',action='store_true')

$pythontest.py,输出为False$pythontest.py--test_action,输出为True

default设为True时:

parser.add_argument("--test_action"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论