[python技巧]OmegaConf调用配置文件

发布于:2024-07-07 ⋅ 阅读:(45) ⋅ 点赞:(0)

在https://blog.csdn.net/qq_43235540/article/details/140250813?spm=1001.2014.3001.5502中介绍了parser的使用方法,一般传入参数和是配置文件一起使用,配置.

OmegaConf.load()

从.yaml文件读取配置

opt, unknown = parser.parse_known_args()
configs = [OmegaConf.load(cfg) for cfg in opt.base]

OmegaConf.from_dotlist

使用OmegaConf.from_dotlist将命令行参数转换为配置字典

cli = OmegaConf.from_dotlist(unknown)

OmegaConf.merge(*configs, cli)

merge合并两个omegaconf.dictconfig.DictConfig类型的配置字典

config = OmegaConf.merge(*configs, cli)
#configs是装着omegaconf.dictconfig.DictConfig的列表,cli是omegaconf.dictconfig.DictConfig

config.pop 删掉一些东西

#从config里弹出"loghtning"这个字典项目,然后把它用赋值给OmegaConf.create()创建的新对象omegaconf.dictconfig.DictConfig.

lightning_config = config.pop("lightning", OmegaConf.create())

get得到配置字典中的某一项

model_config = config.get("model", OmegaConf.create())

代码

import argparse
# from pytorch_lightning import Trainer
from omegaconf import OmegaConf

parser = argparse.ArgumentParser()

parser.add_argument(
    "-b",
    "--base",
    nargs="*",
    required=False,
    metavar="base_config.yaml",
    help="paths to base configs. Loaded from left-to-right. "
            "Parameters can be overwritten or added with command-line options of the form `--key value`.",
    default=["test.yaml"]
)
# 解析命令行参数
opt, unknown = parser.parse_known_args()
configs = [OmegaConf.load(cfg) for cfg in opt.base]
print("configs",configs)

# 使用OmegaConf.from_dotlist将命令行参数转换为配置字典
cli = OmegaConf.from_dotlist(unknown)

config = OmegaConf.merge(*configs, cli)
lightning_config = config.pop("lightning", OmegaConf.create())
model_config = config.get("model", OmegaConf.create())

配置文件 test.yaml

model:
  base_learning_rate: 2.0e-06
  target: ldm.models.diffusion.ddpm.LatentDiffusion
  params:
    log_every_t: 200
    timesteps: 1000
    unet_config:
      target: ldm.modules.diffusionmodules.openaimodel.UNetModel
      params:
        image_size: 64
        in_channels: 1
        out_channels: 1
data:
  target: main.DataModuleFromConfig
  params:
    batch_size: 48
    train:
      target: ldm.data.lsun.LSUNBedroomsTrain
      params:
        size: 64
    validation:
      target: ldm.data.lsun.LSUNBedroomsValidation
      params:
        size: 64


lightning:
  callbacks:
    image_logger:
      target: main.ImageLogger
      params:
        batch_frequency: 10000000000
        max_images: 1
        increase_log_steps: False

  trainer:
    benchmark: True
    max_epochs: 200000

网站公告

今日签到

点亮在社区的每一天
去签到