.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"
    },

昨天看到的記錄一下以免忘記。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM