【GiantPandaCV導語】深度學習調參過程中會遇到很多參數,爲了完整保存一個項目的所有配置,推薦使用yaml工具進行配置。
簡介
Yaml是可讀的數據序列化語言,常用於配置文件。
支持類型有:
- 標量(字符串、證書、浮點)
- 列表
- 關聯數組 字典
語法特點:
- 大小寫敏感
- 縮進表示層級關係
- 列表通過 "-" 表示,字典通過 ":"表示
- 註釋使用 "#"
安裝用命令:
pip install pyyaml
使用
舉個例子:
name: tosan
age: 22
skill:
name1: coding
time: 2years
job:
- name2: JD
pay: 2k
- name3: HW
pay: 4k
注意:關鍵字不能重複;不能使用tab,必須使用空格。
處理的腳本:
import yaml
f = open("configs/test.yml", "r")
y = yaml.load(f)
print(y)
輸出結果:
YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
y = yaml.load(f)
{'name': 'tosan', 'age': 22, 'skill': {'name1': 'coding', 'time': '2years'}, 'job': [{'name2': 'JD', 'pay': '2k'}, {'name3': 'HW', 'pay': '4k'}]}
這個警告取消方法是:添加默認loader
import yaml
f = open("configs/test.yml", "r")
y = yaml.load(f, Loader=yaml.FullLoader)
print(y)
保存:
content_dict = {
'name':"ch",
}
f = open("./config.yml","w")
print(yaml.dump(content_dict, f))
語法
支持的類型:
# 支持數字,整形、float
pi: 3.14
# 支持布爾變量
islist: true
isdict: false
# 支持None
cash: ~
# 時間日期採用ISO8601
time1: 2021-6-9 21:59:43.10-05:00
#強制轉化類型
int_to_str: !!str 123
bool_to_str: !!str true
# 支持list
- 1
- 2
- 3
# 複合list和dict
test2:
- name: xxx
attr1: sunny
attr2: rainy
attr3: cloudy