OmegaConf简明使用

看了一点关于 OmegaConf 的使用方法,在此简单记录,方便日后查找。

用途

OmegaConf 是一个 python 的库,帮助我们方便地创建、修改、维护配置文件,对于深度学习中参数设置和调整有着很方便地作用

基础用法

创建配置文件

OmegaConf 支持从 yaml、json 等多种文件格式中进行创建,先设置一个简单的配置文件,如下所示的 config.yaml 文件:

model:
  name: resnet
  num_layers: 18
training:
  batch_size: 64
  learning_rate: 0.001

可以用 OmegaConf 进行 load:

from omegaconf import OmegaConf 
cfg = OmegaConf.load("config.yaml")

这时 config.yaml 文件就已经被 load 到 cfg 中了

修改参数

OmegaConf 修改配置参数也很方便,直接修改即可:

cfg.model.num_layers = 24

这样就将模型层数从 18 修改到 24

文件覆盖

如果想要批量修改参数,也可以从新的 yaml文件中加载,用以覆盖原始配置文件。比如建立一个包含想要覆盖的参数项的文件 override.yaml

model:
  name: resnet50
  num_layers: 24
training:
  batch_size: 128

加载后再覆盖原配置:

override = OmegaConf.load("override.yaml")
new_cfg = OmegaConf.merge(cfg, override)

这样新配置文件的参数就被更改了。

命令行读入

OmegaConf 支持命令行读入参数,需要现在配置文件中定义接受命令行传入的参数,使用 @ 符号标明,如下所示:

training:
batch_size: 128
learning_rate: 0.001
@epochs: 10

再使用 from_cli 方法解析命令行传入的参数:

import sys
from omegaconf import OmegaConf
overrides = OmegaConf.from_cli(sys.argv[1:])
config = OmegaConf.merge(config, overrides)

这样,当我们运行该python文件时,从命令行直接传入参数即可:

python my_script.py training.@epochs=20

继承配置

假设有一个基础配置 base_config.yaml

model:
  name: resnet
  num_layers: 18
training:
  batch_size: 64
  learning_rate: 0.001

下面,你想要设计一个继承了该配置的 customed 的配置文件 custom_config,可以这样写:

_base_: base_config.yaml
training:
batch_size: 128
learning_rate: 0.001
epochs: 10000
```
该配置文件既继承了原有的配置信息,也对原有的配置信息做了一定的修改和增补。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值