美文网首页
如何让你的Python项目变得更优雅

如何让你的Python项目变得更优雅

作者: geekboys | 来源:发表于2020-03-12 23:18 被阅读0次

yacs--Python项目配置系统

最近深度学习的项目准备上线,但是做深度学习的小伙伴都会被网络中的众多超参数弄的焦头烂额吧。在项目测试时我们可以在程序中写死,但是真正上线的话还需要规范一点的。通过阅读大神的代码,发现一个好的工具使得程序代码变得非常优雅这就是yacs这个代码配置系统。yacs语法非常简单,上手非常的快。yacs有点类似于argparse,只不过用的时候有差别,argparse需要在运行文件中写一堆类似 --input --output_dir一类的东西,而yacs写好之后就可以放到别的文档中,非常方便管理,也很清晰。yacs主要有两种使用:

    1. 用来指定local variable(Configuration as local variable)
    1. 用来指定global singleton(Configuration as a global singleton)

这里我们使用主要是第一种方法,用来配置本地变量。

如何使用

这里需要首先下载yacs这个库,这里就不赘述了。下面说主要步骤:

  1. 首先我们在项目中创建一个config的独立模块,然后在创建config.py或者default.py的配置文件。这是大家约定的习俗,但是我还是建议命名为default.py这样导入包的时候也显的更加的优雅了。其实理解yacs主要一点就是节点的概念,实际节点就是一个CfgNode的实例,然后再配置该节点的信息就可以了。然后就是根据需求文件格式清晰的进行配置了:
from yacs.config import CfgNode as CN

_C = CN()
# ---------------------------------------------
# 配置系统信息
# ---------------------------------------------
_C.SYSTEM = CN()  # 创建系统节点
_C.SYSTEM.NUM_GPUS = 8
_C.SYSTEM.DEVICE_ID = 0  # ---------------------------------------------
# 配置属性1信息
# ---------------------------------------------
_C.ASIE = CN()
_C.ASIE.LINE = 0.5
_C.ASIE.MINCY = 0.3
_C.ASIE.MAXCY = 0.7

# ---------------------------------------------
# 配置属性2信息
# ---------------------------------------------
_C.GATE = CN()
_C.GATE.LINE = 0.5
_C.GATE.CYMIN = 0.35
_C.GATE.CYMAX = 0.45

_C.OUTPUT_DIR = ""

_C.TRAIN = CN()  # 配置节点TRAIN
_C.TRAIN.HYPERPARAMETER_1 = 0.1
_C.TRAIN.SCALES = (2, 3)
cfg = _C  # 为了导包的时候好看些 
  1. 读取yacs配置信息也很简单的,只需要在项目中导入就可以使用了:
from config.config import cfg#导入包
print(cfg.SYSTEM.NUM_GPUS)#获取配置信息

读取yaml文件

yaml文件相信对很多人也不陌生的,它也是我们常用的配置文件。yacs还有一个强大的功能就是读取yaml文件,这个功能是不是很厉害呀。其实使用起来也很简单,只需简单的两行代码就可以了:

    print(cfg.SYSTEM.NUM_GPUS)#原先配置的值
    cfg.merge_from_file("./config/experiment.yaml")#加载yaml文件
    cfg.freeze()#防止文件改变
    print(cfg.SYSTEM.NUM_GPUS)#修改配置后的值

我们首先需要创建一个yaml格式的配置文件,然后进行merge就行了,最后一定要加上freeze()防止值改变。

友情提示:当读取yaml文件时候,yaml的键和值一定是yacs配置文件中的,否则会报错的,这一点使用一定要谨记!

相关文章

  • 如何让你的Python项目变得更优雅

    yacs--Python项目配置系统 最近深度学习的项目准备上线,但是做深度学习的小伙伴都会被网络中的众多超参数弄...

  • 如何让自己变得优雅

    我们在生活中不要陷入物质泥潭,其实我们必需的生活用品,远比我们想象的少很多,大概只占到20%,买贵的东西一定...

  • 笨方法学Python-习题12-提示别人

    在ex11中,学到了Python中的输入函数input。在ex12中我们去优化ex11的程序,让它变得更简单和优雅...

  • 如何让自己爱上阅读,我的4点体会

    热爱让坚持变得更轻松,让行动变得更积极,让你变得更专注。 如何让自己爱上阅读,来助推自己不断成长?我有4点体会: ...

  • 收藏整理(持续更新)

    项目搭建 优雅快速的搭建一个IOS项目,让你的项目结构不再混乱!(纯代码) 手把手教你如何搭建iOS项目基本框架 ...

  • 小猿圈python知识点分享之tablib模块的使用

    python中有很多模块,因为这些模块的封装,让代码更加优雅、功能更加强大,编程变得不那么复杂,小猿圈Python...

  • 如何优雅地使用 Chrome?

    如何优雅地使用Chrome? 何为优雅,我理解的优雅是让你用得更舒心更便捷,所以一切都围绕简洁实用位标准。 第一步...

  • 做有同理心的人

    爱心会让你变得更富有。 憎恨会让你变得更痛苦。 虚情假意会让你变得更疲惫。 零容忍会让你变得更宽广。 小小的善举会...

  • 5个提升性能的项目

    Python的运行速度确实没有C或者Java快,但是有一些项目正在努力让Python变得更快。 Python代码简...

  • Python很慢?Python之父一句话亮了

    Python的运行速度确实没有C或者Java快,但是有一些项目正在努力让Python变得更快。 Python代码简...

网友评论

      本文标题:如何让你的Python项目变得更优雅

      本文链接:https://www.haomeiwen.com/subject/cbvgjhtx.html