.yaml文件的读取

.yaml文件通常用老保存一些参数的配置,那如何去读取它呢

首先看看.yaml文件长什么样

GPUS: (0,1,2,3)
LOG_DIR: 'log/'
DATA_DIR: ''
OUTPUT_DIR: 'output/'
WORKERS: 4
PRINT_FREQ: 1000

MODEL: 
  NAME: cls_hrnet
  IMAGE_SIZE: 
    - 224
    - 224
  EXTRA:
    STAGE1:
      NUM_MODULES: 1
      NUM_RANCHES: 1
      BLOCK: BOTTLENECK
      NUM_BLOCKS:
      - 4
      NUM_CHANNELS:
      - 64
      FUSE_METHOD: SUM
    STAGE2:
      NUM_MODULES: 1
      NUM_BRANCHES: 2
      BLOCK: BASIC
      NUM_BLOCKS:
      - 4
      - 4
      NUM_CHANNELS:
      - 18
      - 36
      FUSE_METHOD: SUM

这是样例。yaml文件在书写的时候要注意的是,1.不能使用tab键来进行缩进,只能使用空格键进行缩进。2.同一层级的数据只要对齐就可以了,至于几个空格不重要。

下面来进行读取,读取的话使用的是load函数。代码如下

import yaml
yaml_dir='dir.yaml'
f1=open(yaml_dir)
config_params=yaml.load(f1,Loader=yaml.FullLoader)
print(config_params['MODEL'])

其中dir是你的文件路径,load函数用于加载,其实原来的load函数不需要第二个参数,但是昨天做的时候出现了一个异常,去查了一下说是不安全所以补上了第二个参数,第二个参数有很多个可以选取的值,https://github.com/yaml/pyyaml/wiki/PyYAML-yaml.load(input)-Deprecation,链接在这里可以自行查看。读取的结果是字典,长这样

"MODEL"
{
  "NAME": "cls_hrnet",
  "IMAGE_SIZE": [
    224,
    224
  ],
  "EXTRA": {
    "STAGE1": {
      "NUM_MODULES": 1,
      "NUM_RANCHES": 1,
      "BLOCK": "BOTTLENECK",
      "NUM_BLOCKS": [
        4
      ],
      "NUM_CHANNELS": [
        64
      ],
      "FUSE_METHOD": "SUM"
    },
    "STAGE2": {
      "NUM_MODULES": 1,
      "NUM_BRANCHES": 2,
      "BLOCK": "BASIC",
      "NUM_BLOCKS": [
        4,
        4
      ],
      "NUM_CHANNELS": [
        18,
        36
      ],
      "FUSE_METHOD": "SUM"
    },

昨天看到的记录一下以免忘记。

猜你喜欢

转载自www.cnblogs.com/daremosiranaihana/p/13180364.html