python 读取 yaml 配置文件参数的方法

429 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

test_20220105.yaml 内容如下:

decoder: transformer
grad_clip: 5    # 梯度裁剪
accum_grad: 4
max_epoch: 240
log_interval: 100     # 打印日志的步数
optim: adam
shuffle: true
optim_conf:
    lr: 0.002
dataset_conf:
    filter_conf:
        max_length: 40960
        min_length: 0
        token_max_length: 200
        token_min_length: 1

代码示例:

import yaml
config = "test_20220105.yaml"
with open(config, 'r', encoding='utf-8') as fin:
    configs = yaml.load(fin, Loader=yaml.FullLoader)

"""
取key对应的value值的两种方式:
1、configs['key']
2、configs.get('key')
根据下面的例子,显然第一种方式更简单。
"""

# 第一级目录
max_epoch = configs['max_epoch']    # 240
max_epoch = configs.get('max_epoch')    # 240

# 多级目录
max_length = configs['dataset_conf']['filter_conf']['max_length']    # 40960
max_length = configs.get('dataset_conf').get('filter_conf').get('max_length')    # 40960


"""
设置默认值的方法:
configs.get('key', value)    value为默认值
"""

# default=100表示如果configs里面没有 max_epoch 参数,则设置 num_epochs=100;否则,取原来的值。
num_epochs = configs.get('max_epoch', 100)    # 240
type = configs.get('dynamic', 'static')    # static,因为 configs 中没有参数'dynamic'