python小記(十七):Python 使用“繼承”來管理yaml文件

Python 使用“繼承”來管理yaml文件

    • 引言



引言

在 Python 中有時候我們會把參數都儲存在yaml文件中然后進行調用。當我們在進行一個很大的項目的時候,我們可能先需要一個base.yaml文件,然后再使用一個task1.yaml文件進行參數導入,并且task1.yaml文件繼承base.yaml文件,這時候我們應該如何使用呢?


def load_config(path, default_path=None, demo_train_eval='train'):''' Loads config file.Args:  path (str): path to config filedefault_path (bool): whether to use default path'''assert demo_train_eval in ['datagen', 'demo', 'train', 'eval'], f'Invalid value for "demo_train_eval" ({demo_train_eval}) in load_config!'# Load configuration from file itselfwith open(path, 'r') as f:cfg_special = yaml.safe_load(f)# Check if we should inherit from a configinherit_from = cfg_special.get('inherit_from')# If yes, load this config first as default# If no, use the default_pathif inherit_from is not None:if demo_train_eval == 'train':cfg = load_config(osp.join(path_util.get_train_config_dir(), inherit_from))elif demo_train_eval == 'eval':cfg = load_config(osp.join(path_util.get_eval_config_dir(), inherit_from))elif demo_train_eval == 'demo':cfg = load_config(osp.join(path_util.get_demo_config_dir(), inherit_from))elif demo_train_eval == 'datagen':cfg = load_config(osp.join(path_util.get_data_gen_config_dir(), inherit_from))else:raise ValueError(f'Argument "demo_train_eval" must be either "train", "demo", or "eval", value {demo_train_eval} not recognized')elif default_path is not None:with open(default_path, 'r') as f:cfg = yaml.safe_load(f)else:cfg = dict()# Include main configurationupdate_recursive(cfg, cfg_special)return cfgdef update_recursive(dict1: dict, dict2: dict) -> dict:''' Update two config dictionaries recursively.Args:dict1 (dict): first dictionary to be updateddict2 (dict): second dictionary which entries should be used'''for k, v in dict2.items():if k not in dict1:dict1[k] = dict()if isinstance(v, dict):update_recursive(dict1[k], v)else:dict1[k] = v

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/86712.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/86712.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/86712.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Windows搭建opencv cuda開發環境并驗證是否成功

編譯opencv cuda源碼 電腦安裝cuda 12.0或者11.8,根據你的電腦配置自行選擇 下載opencv 源碼 git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git 在opencv目錄里新建 build 文件夾 cd build后 cmake…

【go】初學者入門環境配置,GOPATH,GOROOT,GOCACHE,以及GoLand使用配置注意

一、環境變量配置步驟 1. 打開環境變量設置 Win R 后輸入 sysdm.cpl → 點擊 確定在彈出窗口中點擊 高級 → 環境變量 2. 配置 GOROOT(Go語言安裝根目錄) 作用:告訴系統Go語言的安裝位置(編譯器、標準庫等核心文件所在路徑&a…

gantt-task-react的改造使用

gantt-task-react的鏡像地址 例子 改造1:切斷父子關聯關系,父為project組件,子為task組件, 原來的功能是task組件拖動會影響到父組件,現在切斷兩者關聯關系,數據都用task組件, 給task組件重…

kotlin 協程(Coroutine)

Coroutine(協程)的轉換原理: 在 kotlin 中,Coroution 是一種輕量級的線程管理方式,其轉換原理涉及 狀態機生成、掛起函數轉換和調度器機制。 一、協程的本質:狀態機 kotlin 協程通過 編譯器生成狀態機 實…

線性變換之維數公式(秩-零化度定理)

秩數-零化度定理(rank-nullity theorem) 目錄 1. (映射)零空間(線性映射或變換的核)(null-space或nullspace) 2. 跨度(或開度)(span) 3. (線性映射的)零化度(nullity) 4. 線性變換的維數公式(秩數-零化度定理)(rank-nullity theorem) 5. 函數的上域(codomain) 1…

Spring Cloud Gateway 實戰:網關配置與 Sentinel 限流詳解

Spring Cloud Gateway 實戰:網關配置與 Sentinel 限流詳解 在微服務架構中,網關扮演著統一入口、負載均衡、安全認證、限流等多種角色。Spring Cloud Gateway 是 Spring Cloud 官方推出的新一代網關組件,相比于第一代 Netflix Zuul&#xff…

JAVA-常用API(二)

目錄 1.Arrays 1.1認識Arrays 1.2Arrays的排序 2.JDK8的新特性:Lambda表達式 2.1認識Lambda表達式 2.2用Lambda表達式簡化代碼、省略規則 3.JDK8的新特性:方法引用(進一步簡化Lambda表達式) 3.1 靜態方法引用 3.2 實例方法引…

深入理解PHP的命名空間

命名空間是PHP 5.3引入的一個特性,它的主要目的是解決在大型應用程序中可能出現的名稱沖突問題。在沒有命名空間的情況下,如果兩個不同的庫或模塊定義了相同名稱的函數或類,那么在使用這些庫或模塊的時候就會引發沖突。為了解決這個問題&…

SwiftUI學習筆記day5:Lecture 5 Stanford CS193p 2023

SwiftUI學習筆記day5:Lecture 5 Stanford CS193p 2023 課程鏈接:Lecture 5 Stanford CS193p 2023代碼倉庫:iOS課程大綱: Enum 定義:enum MyType { … }關聯值:case drink(name: String, oz: Int)匹配:switc…

idea 報錯:java: 非法字符: ‘\ufeff‘

idea 報錯:java: 非法字符: ‘\ufeff‘ 解決方案:

數據結構與算法之美:圖

Hello大家好&#xff01;很高興我們又見面啦&#xff01;給生活添點passion&#xff0c;開始今天的編程之路&#xff01; 我的博客&#xff1a;<但凡. 我的專欄&#xff1a;《編程之路》、《數據結構與算法之美》、《題海拾貝》、《C修煉之路》 歡迎點贊&#xff0c;關注&am…

SpringBoot -- 熱部署

9.SpringBoot 熱部署&#xff08;自動重啟&#xff09; 在實際開發過程中&#xff0c;每次修改代碼就得將項目重啟&#xff0c;重新部署&#xff0c;對于一些大型應用來說&#xff0c;重啟時間需要花費大量的時間成本。對于一個后端開發者來說&#xff0c;重啟過程確實很難受啊…

HarmonyOS 5瀏覽器引擎對WebGL 2.0的支持如何?

以下是HarmonyOS 5瀏覽器引擎對?WebGL 2.0?支持的詳細技術分析&#xff1a; 一、核心支持能力 ?系統能力聲明 HarmonyOS 5 瀏覽器引擎通過 SystemCapability.Graphic.Graphic2D.WebGL2 提供對 WebGL 2.0 的底層支持 支持的關鍵特性包括&#xff1a; OpenGL ES 3.0 特性…

Class1線性回歸

Class1線性回歸 買房預測 要根據歷史數據來預測一套房子的價格。你發現影響房價的因素有很多&#xff0c;于是你決定使用線性回歸模型來預測房價。 影響房價的因素如下&#xff1a; 房屋面積&#xff08;平方米&#xff09; 房齡&#xff08;年&#xff09; 離地鐵站的距離&a…

Vue.js 3:重新定義前端開發的進化之路

Vue.js 3&#xff1a;重新定義前端開發的進化之路 引言&#xff1a;一場醞釀已久的革新 2020年9月18日&#xff0c;Vue.js團隊以代號"One Piece"正式發布3.0版本&#xff0c;這不僅是框架發展史上的重要里程碑&#xff0c;更是前端工程化領域的一次革命性突破。歷經…

Unity性能優化-渲染模塊(1)-CPU側(1)-優化方向

Unity 中渲染方面的優化大致可以劃分為以下幾塊核心內容&#xff1a; CPU 優化 (減少 Draw Calls 和 CPU 瓶頸) GPU 優化 (減少像素著色和 GPU 瓶頸) 內存和顯存優化 (Resource Management) 光照優化 (Lighting & Global Illumination) 這四個方面是相互關聯的。一個方…

AI矢量圖與視頻無痕修復:用Illustrator與After Effects解鎖創作新維度

最近因一個項目&#xff0c;有機會深度體驗了奧地利Blueskyy藝術學院授權的Adobe教育版全家桶&#xff0c;過程中發現了不少令人驚喜的“黑科技”&#xff0c;很想和大家分享這份發掘寶藏的喜悅。一句話總結這次體驗&#xff1a;慷慨且穩定。比如&#xff0c;它每周提供高達150…

Maven Javadoc 插件使用詳解

Maven Javadoc 插件使用詳解 maven-javadoc-plugin 是 Maven 項目中用于生成 Java API 文檔的標準插件&#xff0c;它封裝了 JDK 的 javadoc 工具&#xff0c;提供了更便捷的配置和集成方式。 一、基本使用 1. 快速生成 Javadoc 在項目根目錄執行以下命令&#xff1a; bas…

Apache Kafka 面試應答指南

Apache Kafka 核心知識詳解與面試應答指南 一、Apache Kafka 概述 Apache Kafka 作為一款分布式流處理框架,在實時構建流處理應用領域發揮著關鍵作用。其最廣為人知的核心功能,便是作為企業級消息引擎被眾多企業采用。 二、消費者組 (一)定義與原理 消費者組是 Kafka 獨…

在NVIDIA Jetson和RTX上運行Google DeepMind的Gemma 3N:多模態AI的邊緣計算革命

在NVIDIA Jetson和RTX上運行Google DeepMind的Gemma 3N&#xff1a;多模態AI的邊緣計算革命 文章目錄 在NVIDIA Jetson和RTX上運行Google DeepMind的Gemma 3N&#xff1a;多模態AI的邊緣計算革命引言&#xff1a;多模態AI進入邊緣計算時代文章結構概覽 第一章&#xff1a;Gemma…