本文已参与「新人创作礼」活动,一起开启掘金创作之路。
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'