Python标准库的ArgumentParser类简介(深度学习常用)

PythonArgumentParser:解析命令行参数的艺术,
ArgumentParser是Python的命令行参数解析工具,简化了定义、解析参数及自动生成帮助文档的过程。它支持选项、位置参数、类型验证、默认值和子命令,有助于构建健壮的命令行应用。

ArgumentParser是Python标准库中的一个类,它用于解析命令行参数并生成用户友好的帮助文档。它是argparse模块的一部分,可以帮助开发者构建具有命令行接口的Python程序。

ArgumentParser类使得在Python程序中定义和解析命令行参数变得简单而直观。它可以自动生成帮助信息并处理用户输入的参数。

ArgumentParser类的一些常用功能:
定义命令行参数:使用ArgumentParser可以定义程序所需的各种命令行参数,例如选项(可选参数)和位置参数(必需参数)。可以指定参数的名称、类型、默认值、帮助信息等。
解析命令行参数:ArgumentParser提供了parse_args()方法,用于解析命令行参数并返回一个包含参数值的命名空间或字典。它会自动解析sys.argv中的参数,也可以手动传递参数列表进行解析。
自动生成帮助信息:ArgumentParser可以根据参数定义自动生成帮助信息。使用add_argument()方法定义参数时,可以指定参数的名称、简短描述、帮助信息等。当用户在命令行中使用-h或–help选项时,ArgumentParser会自动生成并显示帮助文档。
参数类型验证:ArgumentParser可以验证参数的类型,并在类型不匹配时引发错误。它支持多种内置类型,如字符串、整数、浮点数等,也可以自定义验证函数。
默认值设置:可以为参数指定默认值,如果用户没有提供该参数的值,则使用默认值。
子命令支持:ArgumentParser还支持子命令,即在一个程序中定义多个命令,并为每个命令定义独立的参数集合。

ArgumentParser的使用步骤通常包括以下几个步骤:
创建ArgumentParser对象。
使用add_argument()方法定义各种参数。
使用parse_args()方法解析命令行参数。
使用解析后的参数执行相应的操作。
ArgumentParser是一个强大而灵活的工具,可以帮助开发者轻松处理命令行参数,提供友好的用户界面,并减少错误和混淆。

if __name__ == "__main__":
    #Adding necessary input arguments
    parser = argparse.ArgumentParser(description='test')
    parser.add_argument('--input_path',default="input", type=str,help ='input files')
    parser.add_argument('--output_path',default = "output", type=str,help='result dir.')    
    args = parser.parse_args()
run()

给一个使用的案例如下
在这里插入图片描述

python mycode.py --task Humanoid-v3

参数也可以在这里面设置
在这里插入图片描述

关于网络训练选择GPU
在这里插入图片描述
默认是cuda,等价于cuda:0,如果写cuda:1,则表示在第一张卡上训练。

前面定义好参数后,代码内部则可以使用python args.xxx来调用对应的参数

更多参考【Python】Parser 用法-通俗易懂!

### 配置文件的作用 配置文件用于指定深度学习项目的各种参数和选项,使得实验环境易于调整和重复。通过修改配置文件而不是源代码本身,可以方便地测试不同的超参数组合、模型架构和其他设置[^2]。 ### 配置文件的结构 对于基于YACS库构建的Python项目而言,配置文件通常由多个嵌套层次组成: - **主节点**:包含全局性的设定项,比如输出目录(`OUTPUT_DIR`)、日志保存路径(`LOG_DIR`)等; - **子节点**:针对特定模块或组件的具体配置,例如`MODEL`下定义了使用的网络名称(`NAME`)以及预训练权重的位置(`PRETRAINED`);同样地,在`TRAIN`部分则记录着图像尺寸大小(`IMAGE_SIZE`)与迭代次数(`EPOCH`)等相关信息。 ```python from yacs.config import CfgNode as CN config = CN() config.OUTPUT_DIR = 'output_folder/' config.LOG_DIR = 'output_folder/log_folder/' # Model parameters config.MODEL = CN() config.MODEL.NAME = 'Resnet' config.MODEL.PRETRAINED = '' # Training parameters config.TRAIN = CN() config.TRAIN.IMAGE_SIZE = [224, 224] config.TRAIN.EPOCH = 30 ``` 上述代码片段展示了如何利用YACS创建一个名为`config`的对象,并为其添加若干个不同级别的属性值。 ### 使用方法 为了读取并应用这些配置到具体的应用场景当中去,开发者只需要按照既定的方式加载对应的`.py`格式配置脚本即可完成初始化工作。之后便可以通过点号`.`操作符轻松访问任意一层级内的键名所关联的数据内容。此外还可以借助内置函数如`merge_from_file()`或者`freeze()`进一步增强灵活性及安全性。 ### 示例 下面给出一段完整的例子来展示怎样在一个典型的PyTorch训练循环里引入外部传入的命令行参数作为补充输入给整个系统的配置体系带来更大的自由度。 假设有一个位于当前工作空间根部叫做`configs/defaults.py`的标准模板文件存在,则可以在启动时这样写: ```bash python train_net.py --cfg configs/experiment_1.yaml MODEL.BACKBONE.RESNETS.DEPTH=50 SOLVER.MAX_ITER=90000 ``` 其中`train_net.py`内部会执行如下逻辑处理流程: ```python import argparse from yacs.config import CfgNode as CN def parse_args(): parser = argparse.ArgumentParser(description='Train network') parser.add_argument("--cfg", type=str, help="path to configuration file") args = parser.parse_args() if __name__ == '__main__': _C = CN(new_allowed=True) # Load default configurations first. _C.merge_from_file('configs/defaults.py') # Override with command line arguments secondly. if args.cfg is not None: _C.merge_from_file(args.cfg) # Finally override by any remaining CLI options that were passed along side the YAML files. _C.merge_from_list(sys.argv[1:]) # Freeze all entries so they cannot be modified anymore after this point. _C.freeze() ``` 这段程序首先尝试从固定的默认位置加载一组初始状态的基础设定,接着依据用户提供的额外指令覆盖掉某些字段上的旧有数值,最后锁定住整棵树状图防止后续意外篡改行为的发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值