配置管理工具——omegaconf

news2024/9/21 13:47:06

omegaconf是专门用来解析.yaml文件,支持对yaml中设置参数的变量插值类型检查默认值处理层次化配置。参考:omegaconf,一个超强的 Python 库!_omeaconf-CSDN博客

主要介绍一下几个常用到的功能(持续补充...):

1. 导入.yaml

假设你的工作目录下有两个文件,一个是config.yaml,一个是main.py。yaml文件里面的内容:

# config.yaml
model:
  name: resnet
  num_layers: 18
training:
  batch_size: 64
  learning_rate: 0.001

可以使用如下代码解析并导入.yaml文件:

from omegaconf import OmegaConf

# 加载配置文件
config = OmegaConf.load("config.yaml")
print(type(config))
# <class 'omegaconf.dictconfig.DictConfig'>

# 将配置文件转换为 Python 字典
config_dict = OmegaConf.to_container(config, resolve=True)
print(type(config_dict))
# <class 'dict'>

# 使用.访问里面的属性
print(OmegaConf.to_yaml(config))
# model:
#   name: resnet50
#   layers: 18
# training:
#   batch_size: 64
#   epochs: 10

解释一下`OmegaConf.save`中的参数`resolve`的含义,`resolve=True`意味着允许插值,举个例子,比如你的配置文件里面的某个参数引用了本配置文件的其他参数,比如:

# config.yaml
model:
  name: resnet
  num_layers: 20
  heads_num: 34
training:
  batch_size: ${model.num_layers}
  learning_rate: 0.001
  optimizer: Adam

使用`resolve=True`后,字典是

{'model': {'name': 'resnet', 'num_layers': 20, 'heads_num': 34}, 'training': {'batch_size': 20, 'learning_rate': 0.001, 'optimizer': 'Adam'}}

可以看到,`batch_size`变成了和`num_layers`一样的值。

2. 修改后存入.yaml文件

分以下几种情况:

一种是创建字典,然后用`OmegaConf`存到.yaml“:

from omegaconf import OmegaConf

my_dict = {
    "model":{
        "name": "resnet",
        "num_layers": 18
    },
    "training":{
        "batch_size": 64,
        "learning_rate": 0.001
    }
}
        
# 创建配置
config = OmegaConf.create(my_dict)
print(type(config))
# <class 'omegaconf.dictconfig.DictConfig'>

# 存到.yaml文件
OmegaConf.save(config, "mydict.yaml")

一种是在原来的基础上修改了某个参数值,再存储:

from omegaconf import OmegaConf

# 加载配置文件
config = OmegaConf.load("config.yaml")
print(type(config))
# <class 'omegaconf.dictconfig.DictConfig'>

config.model.num_layers = 20

# 存到.yaml文件
OmegaConf.save(config, "config.yaml")

还有一种是有两个不同的config文件,比如config1.yaml和config2.yaml,config2.yaml对config1.yaml某些值进行了修改,并且包含一些config1.yaml中没有的参数,那么可以通过下面的代码进行合并。比如config1.yaml和config2.yaml的内容分别是:

# config1.yaml
model:
  name: resnet
  num_layers: 18
  heads_num: 34
training:
  batch_size: 64
  learning_rate: 0.001
# config2.yaml
model:
  name: resnet
  num_layers: 20
training:
  batch_size: 64
  learning_rate: 0.001
  optimizer: Adam
from omegaconf import OmegaConf

# 加载配置文件
config1 = OmegaConf.load("config1.yaml")
config2 = OmegaConf.load("config2.yaml")

config1 = OmegaConf.merge(config1, config2)

# 存到.yaml文件
OmegaConf.save(config1, "config1.yaml")

则合并之后的config1就变成了:

# config1.yaml
model:
  name: resnet
  num_layers: 20
  heads_num: 34
training:
  batch_size: 64
  learning_rate: 0.001
  optimizer: Adam

3. 命令行输入参数

OmegaConf还支持从命令行中接收参数。

# config.yaml
model:
  name: resnet50
  layers: 50

training:
  batch_size: 64
  epochs: 10
  optimizer: adam

通过下面的代码:

from omegaconf import OmegaConf
import sys

# 导入配置参数
config = OmegaConf.load("config.yaml")

# 解析命令行参数
overrides = OmegaConf.from_cli(sys.argv[1:])

# 将命令行参数与配置文件合并
config = OmegaConf.merge(config, overrides)

print(config)
python main.py model.layers=29

就可以修改配置文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2152475.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

品牌建设是什么?怎么做好品牌建设?

品牌建设&#xff0c;是每个公司品牌形象树立过程中所做的一系列动作&#xff0c;旨在与目标市场建立情感联系&#xff0c;并在竞争激烈的市场中为企业或产品赢得认同和忠诚度。要做好品牌建设&#xff0c;公司首先要明确自己的品牌定位&#xff0c;然后在通过一些品牌建设策略…

Java调用数据库 笔记06 (修改篇)

1.创建Java的普通class类 2.加载驱动 Class.forName("com.mysql.jdbc.Driver"); 3.驱动管理类调用方法进行连接&#xff0c;得到连接对象 DriverManager.getConnection(url, user, password); 其中设置参数&#xff1a; static final String url "jdbc:my…

2024年上海小学生古诗文大会倒计时一个月:做2024官方模拟题

2024年上海市小学生古诗文大会自由参赛的初赛将于10月19日开始&#xff0c;还有不到一个月的时间。 今天好真题继续带着大家来继续做官方2024年小学生古诗文大会的官方模拟题。 【温馨提示】我给每一道题都独家制作了解析&#xff0c;便于孩子理解和熟记题目背后的知识点&…

【python设计模式6】行为型模式1

目录 责任链模式 观察者模式 责任链模式 责任链模式的内容&#xff1a;使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链并沿着这条链传递该请求&#xff0c;直到有一个对象处理它为止。责任链的角色有抽象处理者、…

b2b2c商城系统好用么 多用户商城系统四大盈利模式

商淘云B2B2C商城系统能帮助企业快速搭建企业自己的多用户商城系统&#xff0c;它提供了多种功能&#xff0c;如多商家管理、订单处理、支付模块集成等&#xff0c;适合各种规模的企业。用户界面友好&#xff0c;且支持定制化&#xff0c;能满足不同业务需求。 多用户商城有四大…

【ARM】A64指令介绍及内存屏障和寄存器

A64指令集介绍 ISA : Instruction System Architecture 指令集总结 跳转指令 使用跳转指令直接跳转&#xff0c;跳转指令有跳转指令B&#xff0c;带链接的跳转指令BL &#xff0c;带状态切换的跳转指令BX。 B 跳转指令&#xff0c;跳转到指定的地址执行程序。 BL 带链接的跳…

.NET周刊【9月第3期 2024-09-15】

国内文章 关于.NET在中国为什么工资低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中国开发者的薪资偏低&#xff0c;主要因市场需求、技术栈选择和企业文化等因素所致。历史上&#xff0c;.NET曾因微软的闭源策略发展受限&#xff0c;尽管后来推出了跨平…

传输层协议 —— TCP协议(下篇)

目录 0.前言 1.流量控制 什么是流量控制&#xff1f; 如何做到流量控制&#xff1f; 窗口探测 PSH标志位与流量控制 一个问题 2.滑动窗口 为什么要有滑动窗口&#xff1f; 滑动窗口在哪&#xff1f; 滑动窗口到底是什么&#xff1f; 滑动窗口的工作原理 滑动窗口中…

Java——认识String类

在 C 语言中已经涉及到字符串了&#xff0c;但是在 C 语言中要表示字符串只能使用字符数组或者字符指针&#xff0c;可以使用标准库提供的字符串系列函数完成大部分操作&#xff0c;但是这种将数据和操作数据方法分离开的方式不符合面相对象的思想&#xff0c;而字 符串应用又非…

【射频通信电子线路基础第五讲】噪声、噪声系数和灵敏度

一、噪声 确定信号对应的是干扰&#xff0c;而随机信号对应的是噪声&#xff0c;噪声又分为系统内部的噪声和外部对系统的噪声。 1、电阻热噪声 &#xff08;1&#xff09;无源有耗网络的热噪声 &#xff08;2&#xff09;热噪声通过线性网络 &#xff08;3&#xff09;等效噪…

酷炫航模飞手飞行技术详解

在无人机与航模的广阔世界里&#xff0c;成为一名技艺高超的飞手&#xff0c;不仅需要对飞行器有深入的理解&#xff0c;还需掌握一系列精湛的飞行技巧。本文将从基础飞行技巧、特技飞行动作、FPV第一人称视角、安全飞行要点、设备调试与维护&#xff0c;以及实战应用与拓展六个…

2024 “华为杯” 中国研究生数学建模竞赛(E题)深度剖析|高速公路应急车道启用建模|数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题&#xff01; CS团队倾注了大量时间和心血&#xff0c;深入挖掘解…

深度学习--从零实现线性回归【数据流水线+模型+损失函数+小批量梯度下降】

代码来源于动手学深度学习pytorch版&#xff0c;感兴趣的同学可以自行购买观看。本节内容带着大家了解深度学习框架底层实现逻辑&#xff0c;如何自定义模型&#xff0c;自定义层或自定义损失函数&#xff0c;方便大家后续使用深度学习框架时候能够明白一些基本函数的实现过程&…

C语言——————结构体

前言&#xff1a; 我们都已经学了很多int char …等类型还学到了同类型元素构成的数组&#xff0c;以及取上述类型的指针&#xff0c;在一些小应用可以灵活使用&#xff0c;然而&#xff0c;在实际问题中有时候我们需要几种数据类型一起来修饰某个变量。 例如一个学生的信息就…

2024 “华为杯” 中国研究生数学建模竞赛(F题)深度剖析|X射线脉冲星光子到达时间建模|数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题&#xff01; CS团队倾注了大量时间和心血&#xff0c;深入挖掘解…

如何成为信息安全等级测评师?具体有哪些要求?

给大家的福利&#xff0c;点击下方蓝色字 即可免费领取↓↓↓ &#x1f91f; 基于入门网络安全/黑客打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 文章目录 前言 信息安全等级测评师 定义与作用&#xff1a;证书颁发&#xff1a;能力要求&#x…

2024 “华为杯” 中国研究生数学建模竞赛(C题)深度剖析|数据驱动下磁性元件的磁芯损耗建模|数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题&#xff01; CS团队倾注了大量时间和心血&#xff0c;深入挖掘解…

植保无人机是朝阳产业还是夕阳产业?

植保无人机产业是朝阳产业还是夕阳产业&#xff0c;可以从多个维度进行分析&#xff1a; 一、市场需求与增长趋势 市场需求&#xff1a;随着农业现代化的推进和劳动力成本的上升&#xff0c;植保无人机因其高效、安全、节省农药等优势&#xff0c;在农业生产中的应用越来越广…

Spring Boot赋能高校心理健康教育

1绪 论 1.1研究背景 随着计算机和网络技术的不断发展&#xff0c;计算机网络已经逐渐深入人们的生活&#xff0c;网络已经能够覆盖我们生活的每一个角落&#xff0c;给用户的网上交流和学习提供了巨大的方便。 当今社会处在一个高速发展的信息时代&#xff0c;计算机网络的发展…

【Python】探索 Errbot:多功能聊天机器人框架

不是旅行治愈了你&#xff0c;是你在路上放过了自己。 在当今的数字化时代&#xff0c;聊天机器人已成为企业与客户互动、提升工作效率和增加乐趣的重要工具。Errbot是一个高度可扩展的聊天机器人框架&#xff0c;它允许开发者使用Python轻松创建和定制机器人。本文将介绍Errb…