又是一个配置系统

tacs的Python项目详细描述


塔克斯

尚不支持str方法。在

简介

TACS是作为一个轻量级库来定义和管理的 系统配置,如软件中常见的配置 为科学实验而设计。这些“配置” 通常包括训练中使用的超参数等概念 机器学习模型或可配置模型超参数,如 作为卷积神经网络的深度。既然你这么做了 你需要可靠的科学 序列化实验配置的方法。塔克斯 使用TOML作为一种简单、可读的序列化格式。 范例是:your code + a TACS config for experiment E (+ external dependencies + hardware + other nuisance terms ...) = reproducible experiment E。你可能无法控制 一切,至少你可以控制你的代码和你的实验 配置。亚克斯是来帮你的。在

TAC源于用于以下领域的实验性配置系统: py-faster-rcnnDetectron。在

用法

TACS可以以多种灵活的方式使用。主要有两种 范例:

  • 配置为local variable
  • 配置为global singleton

这取决于您喜欢使用哪一个,尽管局部变量 推荐路线。在

要在项目中使用TACS,首先要创建一个项目配置 文件,通常称为config.pydefaults.py此文件 是所有可配置选项的一站式参考点。 它应该有很好的文档记录,并提供合理的默认值 所有选项。

# my_project/config.pyfromtacs.configimportCfgNodeasCN_C=CN()_C.SYSTEM=CN()# Number of GPUS to use in the experiment_C.SYSTEM.NUM_GPUS=8# Number of workers for doing things_C.SYSTEM.NUM_WORKERS=4_C.TRAIN=CN()# A very important hyperparameter_C.TRAIN.HYPERPARAMETER_1=0.1# The all important scales for the stuff_C.TRAIN.SCALES=(2,4,8,16)defget_cfg_defaults():"""Get a yacs CfgNode object with default values for my_project."""# Return a clone so that the defaults will not be altered# This is for the "local variable" use patternreturn_C.clone()# Alternatively, provide a way to import the defaults as# a global singleton:# cfg = _C  # users can `from config import cfg`

接下来,您将创建TOML配置文件;通常 每个实验一个。每个配置文件仅重写 实验中正在改变的选择。在

^{pr2}$

最后,您将得到使用config的实际项目代码 系统。在任何初始设置之后,最好将其冻结到 通过调用freeze()方法防止进一步修改。作为 如下图所示,配置选项可以使用全局 通过导入cfg并直接访问它,或 可以复制cfg并将其作为参数传递。在

# my_project/main.pyimportmy_projectfromconfigimportget_cfg_defaults# local variable usage pattern, or:# from config import cfg  # global singleton usage patternif__name__=="__main__":cfg=get_cfg_defaults()cfg.merge_from_file("experiment.toml")cfg.freeze()print(cfg)# Example of using the cfg as global access to optionsifcfg.SYSTEM.NUM_GPUS>0:my_project.setup_multi_gpu_support()model=my_project.create_model(cfg)

命令行重写

可以使用完全限定的键、值对列表更新CfgNode。 这使得从命令行使用重写选项变得很容易。例如:

cfg.merge_from_file("experiment.toml")# Now override from a list (opts could come from the command line)opts=["SYSTEM.NUM_GPUS",8,"TRAIN.SCALES","[1, 2, 3, 4]"]cfg.merge_from_list(opts)

建议遵循以下原则:“只有一种方法可以 配置相同的东西。”这个原则意味着如果一个选项 是在TACS config对象中定义的,那么您的程序应该设置 使用cfg.merge_from_list(opts)和 而不是将--train-scales定义为命令行 参数,然后用于设置cfg.TRAIN.SCALES。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何通过标记名检索多个标记中的元素以进行selenium自动化测试   java iText如何查找最后一行被拆分到下一页   java如何在hudson中的特定jdk上运行Findbugs和PMD?   如何确保java程序与java Environment 6兼容?   对形状进行分组,这样我就可以通过鼠标点击和java处理循环浏览它们   使用生成器映射对象时,java定义无效   maven Java:Struts2和IntelliJ供初学者使用   java子类不继承父类字段   java Android Grid View在Android版本kitkat上崩溃   java Hibernate从缓存返回错误的列表,即使预期的列表与缓存的列表不同   java SendGrid:模板和替换标记   用于普通生产者| Kafka流的java自定义分区器   安卓理解Java内部类中的作用域   无法从Android Studio中的非静态方法调用java非静态方法   比较两个XML响应的JavaXMLUnit   java使用keytool列出密钥   不使用Java客户端库将视频上传到YouTube数据API v3   java My While循环即使在满足条件时也不会结束   自动在外部存储字符串数据,以便以后在Java中使用