深度学习项目配置参数(二) yacs库的使用教程

引 言yacs库作为一个管理系统配置的轻量级库,解析yaml配置文件使整个项目结构更清晰。yacs库与argparse库类似,argparse库需要在运行程序文件中定义配置参数,而yacs将配置参数可以放置在其他文件中。


一、yacs库创建配置文件

1.1 创建配置文件

yacs库创建的配置文件名称为default.py或者config.py。在配置文件中需要使用核心类CfgNode创建节点,在各节点中定义参数名称并分配默认值,各节点下的内容可以直接访问。
创建config/default.py文件

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 parametes
config.TRAIN = CN()
config.TRAIN.IMAGE_SIZE = [224, 224]
config.TRAIN.EPOCH = 30

print(config) #打印配置信息

配置信息显示

LOG_DIR: output_folder/log_folder/
MODEL:
  NAME: Resnet
  PRETRAINED: 
OUTPUT_DIR: output_folder/
TRAIN:
  EPOCH: 30
  IMAGE_SIZE: [224, 224]

1.2 配置参数查、增、改

可以在project\demo.py文件中查询、增加、修改配置信息

from config.default import config

if __name__ == '__main__':

    # 查询配置参数
    print(config.OUTPUT_DIR)  # output_folder/
    print(config.MODEL.NAME)  # Resnet
    print('-'*50)
    # 修改配置参数
    config.TRAIN.EPOCH = 50
    print(config.TRAIN.EPOCH)  # epoch=50
    print('-' * 50
### YACS 简介 YACS (Yet Another Configuration System) 是一个轻量级的配置管理系统,旨在与其他开源项目结合使用,以提高项目的可配置性和可扩展性[^1]。该提供了简洁的 API,使得加载、访问和修改配置选项变得非常容易,从而更好地组织和管理项目配置,提升代码的可读性和可维护性[^2]。 ### 安装 YACS 为了开始使用 YACS,首先需要安装这个 Python 。可以通过 pip 工具轻松完成这一操作: ```bash pip install yacs ``` ### 创建并使用配置文件 创建一个新的配置对象通常涉及以下几个方面的工作流程: - **导入必要的包** 导入 `yacs.config` 中的 `CfgNode` 类来初始化配置节点。 ```python from yacs.config import CfgNode as CN ``` - **构建默认配置树** 构建一个包含默认参数设置的基础配置结构。 ```python _C = CN() # 添加一些简单的键值对作为示例 _C.TRAIN = CN() _C.TRAIN.BATCH_SIZE = 8 _C.TRAIN.EPOCHS = 90 _C.MODEL = CN() _C.MODEL.NAME = 'resnet50' ``` - **从外部源加载配置更新** 可以通过多种方式加载额外的配置覆盖现有设定,比如从 YAML 文件或者命令行参数传入新的配置项。 ```python cfg.merge_from_file('path/to/config.yaml') cfg.freeze() # 锁定配置防止进一步更改 ``` - **保存当前配置到磁盘** 当希望记录下运行时所使用的具体配置以便日后重现实验结果时,可以将整个配置导出成字符串形式再写入文件中去。 ```python with open('output_config.yaml', 'w') as f: f.write(cfg.dump()) ``` ### 实际应用案例 多个知名机器学习框架已经集成了 YACS 来实现更灵活高效的超参调整机制。例如,在 Facebook AI Research 推出的目标检测平台 Detectron2 和 MMDetection 这样的目标检测工具箱里都采用了 YACS 负责解析复杂的模型训练配置;而在 PyTorch Lightning 上也能见到它的身影,用来简化深度学习模型开发过程中涉及到的各种设置管理工作。 ### 结合 PyTorch 使用 当与 PyTorch 搭配工作时,YACS 特别适合于那些依赖大量超参数调节的任务场景,如图像分类、物体定位等计算机视觉领域内的挑战。借助其强大的功能特性,研究人员不仅能够快速搭建起原型系统来进行初步探索,而且还能确保最终版本具备良好的通用性和移植能力[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值