当前位置: 首页 > news >正文

yaml配置文件

最近在写代码,发现随着网络的增加,代码变得越来越冗余,所以就想着写一个网络的配置文件,把网络的配置放到一个文件中,而不再主函数中,这样代码开起来就好看了,调试的时候也方便了。之前写过一篇神经网络配置文件的文章:config配置文件原理及使用,但是这篇文章不适用于我现在的情况,这篇文章需要写一个config.py文件,然后再写一个config.yaml文件,有些网络的配置是在config.py文件中写的,我想的是针对于某个网络单独建立一下config.yaml文件,把他的配置写到里面,然后在更新到config.py文件中,可是这样写完报错,原因就是config.yaml文件中定义的变量必须在config.py文件中有定义,但是这样针对目前我的工程有多个神经网络,就不符合解决代码冗长的初衷了,所以就选择了本文的方案,这里记录一下方便以后查阅。

yaml配置文件

  • yaml介绍
    • 基本语法
    • 数据类型
  • 安装PyYAML
  • PyYAML使用
  • 参考资料

yaml介绍

YAML是"YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。

YAML是一种数据序列化格式,优点是:

  • 对于人类可读性更友好
  • 方便与脚本语言进行交互使用

基本语法

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进不允许使用tab,只允许空格
  • 缩进的空格数不重要,只要相同层级的元素左对齐即可
  • #表示注释

数据类型

  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
  • 纯量(scalars):单个的、不可再分的值

安装PyYAML

pip install PyYAML

安装的时候总是报错:

在这里插入图片描述
本以为是网络的问题,重复运行上面的安装代码好几次,还是不行,这就有可能不是网络的问题了,然后就尝试着更新一下库:

sudo apt-get update

然后再尝试着安装,结果一次成功:

在这里插入图片描述

PyYAML使用

首先在config.yaml配置文件中定义可配置信息:

DATA_AUGMENTATION : 5
KERNEL_L_CONV1 : 1EMBED_DIM_T : 150
EMBED_DIM_C : 62
HEADS_T : 5
HEADS_C : 2
ACT_ATTEN : 'elu'
DROPOUT_ATTEN : 0.3DROPOUTRATE : 0.3
KERNEL_L_SEPARABLE : 3
DEPTHWISE : 5
AVGPOOL_DEPTHWISE : 2
AVGPOOL_SEPARABLE : 4AVGPOOL_SIZE_CLA : 1
FC_IN_CLA : 25
N_CLASSES : 3

使用PyYAML模块解析config.yaml配置文件,主要步骤如下:

  • 使用open()打开config.yaml配置文件,然后使用read()读取
  • 使用yaml.load(stream, Loader)加载读取的配置文件数据,生成一个y的对象
  • 使用字典的形式访问生成的y对象中的配置信息
def build_SelfAtten_Mixer(yaml_path):# 使用open()函数读取config.yaml文件yaml_file = open(yaml_path, "r", encoding="utf-8")# 读取文件中的内容file_data = yaml_file.read()# 加载数据流,返回字典类型数据config = yaml.load(file_data, Loader=yaml.FullLoader)"""build SelfAtten_Mixer model from config"""model = SelfAtten_Mixer(data_augmentation = config['DATA_AUGMENTATION'],kernel_L_conv1 = config['KERNEL_L_CONV1'],embed_dim_T = config['EMBED_DIM_T'],embed_dim_C = config['EMBED_DIM_C'],heads_T = config['HEADS_T'],heads_C = config['HEADS_C'],act_atten = config['ACT_ATTEN'],dropout_atten = config['DROPOUT_ATTEN'],dropoutRate = config['DROPOUTRATE'],kernel_L_separable = config['KERNEL_L_SEPARABLE'],depthwise = config['DEPTHWISE'],avgpool_depthwise = config['AVGPOOL_DEPTHWISE'],avgpool_separable = config['AVGPOOL_SEPARABLE'],avgpool_size_cla = config['AVGPOOL_SIZE_CLA'],fc_in_cla = config['FC_IN_CLA'],n_classes = config['N_CLASSES'],)return model

参考资料

深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件

Python的logging日志工具 & 深度学习项目yaml配置文件

http://www.lryc.cn/news/6881.html

相关文章:

  • 284. 顶端迭代器
  • 自学前端最容易犯的10个的错误,入门学前端快来看看
  • 【ADRC控制】使用自抗扰控制器调节起动机入口压力值
  • 剑指 Offer Day2——链表(简单)
  • Final Cut Pro 10.6.5
  • Modelsim仿真操作指导
  • 你知道这20个数组方法是怎么实现的吗?
  • 《系统架构设计》-01-架构和架构师概述
  • 第七届蓝桥杯省赛——5分小组
  • 中国专科医院行业市场规模及未来发展趋势
  • 【刷题笔记】--两数之和Ⅳ,从二叉树中找出两数之和
  • 浏览器渲染原理JavaScript V8引擎
  • 在TheSandbox 的「BOYS PLANET」元宇宙中与你的男孩们见面吧!
  • 数据结构与算法:java对象的比较
  • python(16)--类
  • CNI 网络流量分析(七)Calico 介绍与原理(二)
  • API安全的最大威胁:三体攻击
  • 分布式事务解决方案——TCC
  • ITSS认证分为几个级别,哪个级别最高
  • ZigBee案例笔记 - USART
  • java | 基于Redis的分布式锁实现①
  • 十六、基于FPGA的CRC校验设计实现
  • 2022爱分析 · DataOps厂商全景报告 | 爱分析报告
  • 京东前端react面试题及答案
  • TongWeb8数据源相关问题
  • 关于最近大热的AI,你怎么看?
  • 25.架构和软件产品线
  • Seata-server 源码学习(一)
  • 2023新华为OD机试题 - 斗地主(JavaScript)
  • 素数相关(结合回文数,合数)线性筛素数(欧拉筛法)Euler【算法模板笔记】