Fairseq自定义Simple LSTM训练报错:tutorial_simple_lstm架构未被识别
解决Fairseq自定义架构'tutorial_simple_lstm'未识别的问题
核心原因
你先通过pip install fairseq安装了官方预编译包,之后克隆的Fairseq源码目录与pip安装的版本相互独立,训练时调用的是pip安装的Fairseq,而非你添加了自定义模型的本地源码版本,导致自定义架构无法被识别。另外需确认自定义模型是否完成Fairseq要求的注册流程。
具体解决步骤
替换为本地源码安装Fairseq
卸载pip安装的版本,安装本地克隆的源码包(关联本地文件,后续修改代码无需重装):!pip uninstall -y fairseq %cd /content/fairseq !pip install --editable .检查自定义模型的注册装饰器
打开/content/fairseq/fairseq/models/tutorial_simple_lstm.py,确保添加了Fairseq识别架构必须的装饰器:from fairseq.models import register_model, register_model_architecture @register_model("tutorial_simple_lstm") class TutorialSimpleLSTM(FairseqEncoderDecoderModel): # 你的模型实现代码 pass @register_model_architecture("tutorial_simple_lstm", "tutorial_simple_lstm") def tutorial_simple_lstm_architecture(args): # 架构参数配置代码 pass注意第一个装饰器的名称必须与训练命令
--arch参数完全一致。重新执行训练命令
此时调用的是本地安装的Fairseq,可识别自定义架构:!fairseq-train /content/fairseq/examples/translation/iwslt14.tokenized.de-en \ --arch=tutorial_simple_lstm \ --encoder-dropout=0.2 \ --decoder-dropout=0.2 \ --optimizer=adam \ --lr=0.005 \ --lr-shrink=0.5 \ --max-tokens=12000备选方案:临时设置Python路径
若不想重装,可在训练前临时将本地Fairseq目录加入Python路径:%env PYTHONPATH=/content/fairseq:$PYTHONPATH !fairseq-train /content/fairseq/examples/translation/iwslt14.tokenized.de-en \ --arch=tutorial_simple_lstm \ --encoder-dropout=0.2 \ --decoder-dropout=0.2 \ --optimizer=adam \ --lr=0.005 \ --lr-shrink=0.5 \ --max-tokens=12000
内容的提问来源于stack exchange,提问作者Rubén
相关产品推荐
相关产品推荐

