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