yaml配置文件

news2024/11/25 2:33:57

最近在写代码,发现随着网络的增加,代码变得越来越冗余,所以就想着写一个网络的配置文件,把网络的配置放到一个文件中,而不再主函数中,这样代码开起来就好看了,调试的时候也方便了。之前写过一篇神经网络配置文件的文章: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 : 1

EMBED_DIM_T : 150
EMBED_DIM_C : 62
HEADS_T : 5
HEADS_C : 2
ACT_ATTEN : 'elu'
DROPOUT_ATTEN : 0.3

DROPOUTRATE : 0.3
KERNEL_L_SEPARABLE : 3
DEPTHWISE : 5
AVGPOOL_DEPTHWISE : 2
AVGPOOL_SEPARABLE : 4

AVGPOOL_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.coloradmin.cn/o/346324.html

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

相关文章

rollback-only异常令我对事务有了新的认识

背景 环境 相关环境配置: SpringBootPostGreSQL Spring Data JPA 问题 两个使用 Transaction 注解的 ServiceA 和 ServiceB,在 A 中引入了 B 的方法用于更新数据 ,当 A 中捕捉到 B 中有异常时,回滚动作正常执行,但…

大数据01-Hadoop3.3.1伪分布式安装

目录Hadoop简介特性先决环境配置下载地址安装VMware创建虚拟机安装VMware Tools共享文件夹安装JavaSSH登录权限设置Hadoop伪分布式安装安装单机版HadoopHadoop伪分布式安装Hadoop WebUI管理界面测试HDFS集群以及MapReduce任务程序学习参考Hadoop 简介 Hadoop是Apache软件基金会…

【软件测试】资深8年测试,总结的测试经验。职场如战场......

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 精力有限&#xff0…

[CVPR‘22] EG3D: Efficient Geometry-aware 3D Generative Adversarial Networks

paper: https://nvlabs.github.io/eg3d/media/eg3d.pdfproject: EG3D: Efficient Geometry-aware 3D GANscode: GitHub - NVlabs/eg3d总结: 本文提出一种hybrid explicit-implicit 3D representation: tri-plane hybrid 3D representation,该方法不仅有…

GDI+绘图轻松入门[6]-路径变形和表盘的绘制

有了前面的坐标相关知识的了解,我们这次来实战一把,绘制一个表盘。当然,绘制表盘我们要学会GDI绘图中的路径绘图与两个必要的Transform变形函数,RotateTransform(旋转变形)、TranslateTransform&#xff08…

《爆肝整理》保姆级系列教程python接口自动化(十四)--session关联接口(详解)

简介 上一篇cookie绕过验证码模拟登录博客园,但这只是第一步,一般登录后,还会有其它的操作,如发帖,评论等等,这时候如何保持会话呢?这里我以jenkins平台为例,给小伙伴们在沙场演练一…

10.Jenkins用tags的方式自动发布java应用

Jenkins用tags的方式自动发布java应用1.配置jenkins,告诉jenkins,jdk的安装目录,maven的安装目录2.构建一个maven项目指定构建参数,选择Git Paramete在源码管理中,填写我们git项目的地址,调用变量构建前执行…

秒杀项目之分布式锁运用

目录一、创建Redisson模块二、模拟高并发场景秒杀下单2.1 场景模拟2.2 案例演示三、JVM级锁与redis级分布式锁3.1 JVM级锁3.2 redis级分布式锁3.2.1 什么是setnx3.2.2 场景分析四、redisson分布式锁源码解读4.1 什么是Redisson4.2 Redisson工作原理4.3 入门案例五、秒杀项目整合…

StarRocks 企业行|走进 58 同城,探索极速统一 3.0 时代的企业实践

新的一年,新的征程。随着 StarRocks 项目的演进,StarRocks 也迈入了极速统一 3.0 的时代。极速 OLAP 极速数据湖分析将带给企业什么价值?StarRocks 的用户又是如何在企业内打造专属的大数据平台,让数据驱动业务增长和优化&#x…

尚医通(十三)后台医院管理模块

目录一、医院管理模块需求分析1、医院列表2、医院详情二、医院列表功能(接口)1、添加service分页接口与实现2、添加controller方法3、service_cmn模块提供接口3.1 添加service接口与实现3.2 添加controller4、封装Feign服务调用4.1 搭建service_client父模块4.2 在service_clie…

论文投稿指南——中文核心期刊推荐(园艺)

【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…

Spring3之注解(Annotation)

简介 前面介绍的都是通过 xml 文件配置的方式,Spring 也可以通过注解的方式添加配置,在实际开发过程中,最佳实践是:属于 Spring 的系统配置配置在 xml 文件中,而像注入 bean 之类的配置则通过注解的方式;这…

IDEA根据wsdl生成java代码(Generate Java Code from WSDL)以及乱码问题的解决

目录 一、根据wsdl生成java代码 1、创建待存放java代码的目录,点击“帮助”>“查找操作”,打开查找窗口; 2、输入wsdl并查找,点击“从WSDL生成Java代码”,打开新的窗口; 3、选择wsdl文件&#xff0c…

LeetCode 2.两数相加

原题链接 难度:middle\color{orange}{middle}middle 题目描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表…

工作记录------lombok中@Data包含哪些功能?

工作记录------lombok中Data包含哪些功能? 在实体类中加上Data后,实体类有哪些增强? Data public class BaseProcedure {TableId(value "id", type IdType.ASSIGN_UUID)private String id;private String procedureCode;写上Da…

字节青训营——秒杀系统设计学习笔记(二)

一、两次MD5加密设计 加密:出于安全考虑 第一次 (在前端加密,客户端):密码加密是(明文密码固定盐值)生成md5用于传输,目的,由于http是明文传输,当输入密码若…

Linux进程线程管理

目录 存储管理 linux内存管理基本框架 系统空间管理和用户空间管理 进程与进程调度 进程四要素 用户堆栈的扩展 进程三部曲:创建,执行,消亡 系统调用exit(),wait() 内核中的互斥操作 存储管理 linux内存管理基本框架 系统空间管理…

sql手工注入练习拿flag

sql手工注入练习拿flag 记录一下自己重新开始学习web安全之路⑤。 1、找注入点 ①url ②搜索框 ③登录框 2、找交互点 用单引号判断是否存在交互点,发现回显不正常,说明url存在有交互点 3、判断类型(char类型) 利用and 11 和…

Linux Shell脚本讲解

目录 Shell脚本基础 Shell脚本组成 Shell脚本工作方式 编写简单的Shell脚本 Shell脚本参数 Shell脚本接收参数 Shell脚本判断用户参数 文件测试与逻辑测试语句 整数测试比较语句 字符串比较语句 Shell流程控制 if条件判断语句 单分支 双分支 多分支 for循环语句…

第五章.与学习相关技巧—参数更新的最优化方法(SGD,Momentum,AdaGrad,Adam)

第五章.与学习相关技巧 5.1 参数更新的最优化方法 神经网络学习的目的是找到使损失函数的值尽可能小的参数,这是寻找最优参数的问题,解决这个问题的过程称为最优化。很多深度学习框架都实现了各种最优化方法,比如Lasagne深度学习框架&#xf…