首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理python中的大量配置参数

处理python中的大量配置参数
EN

Stack Overflow用户
提问于 2022-09-23 10:57:34
回答 1查看 64关注 0票数 1

在我的机器学习项目中,我有大量从配置文件中加载的参数,例如YAML文件。我想知道,除了一些'setup_by_cfg‘函数之外,还有关于如何将它们集成到代码基中的最佳实践吗?我在考虑类方法,但是实现会耦合到参数文件,这可能会有问题吗?

代码语言:javascript
复制
# option A
# setup_by_cfg.py

def setup_a(cfg):
    return A(a=cfg.a, b=cfg.b)

def setup_b(cfg):
    ...
代码语言:javascript
复制
# option B
# coupled in class implementation

class A:
    # ...
    @classmethod
    def from_cfg(cls, cfg):
        return cls(a=cfg.a, b=cfg.b)


class B:
    # ...
    @classmethod
    def from_cfg(cls, cfg):
        # ...
EN

回答 1

Stack Overflow用户

发布于 2022-09-29 03:54:44

九头蛇的instantiate API可能是一个很适合你。使用此API,您可以通过调用具有特殊A键的信任项上的instantiate来创建类_target_和类_target_的实例:

代码语言:javascript
复制
from hydra.utils import instantiate

...

a_instance = instantiate(cfgA)
b_instance = instantiate(cfgB)

下面是一个完整的例子:

代码语言:javascript
复制
from hydra.utils import instantiate
from omegaconf import OmegaConf


class A:
    def __init__(self, x: int, y: int) -> None:
        self.x = x
        self.y = y

yaml_data = """
_target_: __main__.A
x: 123
y: 456
"""

cfgA = OmegaConf.create(yaml_data)

a = instantiate(cfgA)
assert isinstance(a, A)
assert a.x == 123
assert a.y == 456
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73826698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档