使用Simple Transformers从Checkpoint加载Seq2Seq模型报错求助
解决Simple Transformers加载训练好的Marian模型报错问题
问题原因
你加载模型的参数传递方式有误,Marian属于encoder-decoder一体化模型,不能仅传入encoder_type和encoder_name,系统会判定你缺失解码器配置信息,从而抛出ValueError。
正确加载方式
基础加载(默认配置)
直接用encoder_type指定模型类型为marian,将训练好的模型路径传给encoder_decoder_name参数即可:
from simpletransformers.seq2seq import Seq2SeqModel model = Seq2SeqModel(encoder_type="marian", encoder_decoder_name="outputs/best_model") print(model.predict(["Using AI to Accelerate Scientific Discovery"]))
加载自定义训练配置(若训练时修改过参数)
如果训练阶段自定义过模型参数(比如调整过Seq2SeqArgs),可以加载训练时保存的配置文件,保证预测参数与训练参数一致:
from simpletransformers.seq2seq import Seq2SeqModel, Seq2SeqArgs # 读取训练时保存的配置文件 model_args = Seq2SeqArgs.from_json_file("outputs/best_model/config.json") model = Seq2SeqModel( encoder_type="marian", encoder_decoder_name="outputs/best_model", args=model_args ) print(model.predict(["Using AI to Accelerate Scientific Discovery"]))
内容的提问来源于stack exchange,提问作者kelvin
相关产品推荐
相关产品推荐

