.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" },
昨天看到的记录一下以免忘记。