如何在HyperPyYAML配置文件中直接调用类实例的方法?
在HyperPyYAML配置文件中直接调用对象方法的解决方案
你可以通过!apply结合!ref的写法,直接在配置文件里完成方法调用,无需加载后手动执行。
修改你的YAML配置如下:
mbart_model: !apply:transformers.MBartForConditionalGeneration.from_pretrained pretrained_model_name_or_path: facebook/mbart-large-50 mbart_decoder: !apply: !ref <mbart_model.get_decoder>
原理说明
!ref <mbart_model.get_decoder>会先获取到mbart_model实例的get_decoder方法对象!apply会自动执行这个可调用的方法对象(因为get_decoder不需要参数,所以无需额外传参)
加载配置时,直接就能拿到调用后的解码器实例:
from hyperpyyaml import load_hyperpyyaml with open('hparams.yaml') as fin: hparams = load_hyperpyyaml(fin) decoder = hparams['mbart_decoder'] # 这里直接是get_decoder()的返回结果
内容的提问来源于stack exchange,提问作者Mins
相关产品推荐
相关产品推荐

