You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无对抗训练训练SST2数据集LSTM模型后缺失model.py及复现问题求助

TextAttack训练LSTM模型后缺失model.py导致攻击失败的问题

问题概述

无对抗训练场景下,使用TextAttack训练基于SST2数据集的LSTM模型后,best_model目录未生成预期的model.py文件,导致无法加载模型执行后续攻击操作。

复现步骤

  1. 执行训练命令:
textattack train --model lstm --dataset sst2 --epochs 20 --early-stopping-epochs 3
  1. 执行攻击命令:
textattack attack --model-from-file ./outputs/2024-11-28-11-41-55-920215/best_model/model.py \
--dataset-from-huggingface sst2 \
--attack-recipe deepwordbug \
--log-to-txt results_deepwordbug.txt
  1. 触发错误,回溯信息如下:
textattack: Loading datasets dataset sst2, split train.
textattack: Loading model and tokenizer from file: ./outputs/2024-11-28-11-41-55-920215/best_model/model.py
textattack: Loading module from `./outputs/2024-11-28-11-41-55-920215/best_model/model.py`.
Traceback (most recent call last):
  File "/Users/skywarrior/Desktop/texattack/textattack-env-310/lib/python3.10/site-packages/textattack/model_args.py", line 192, in _create_model_from_args
    model_module = load_module_from_file(args.model_from_file)
  File "/Users/skywarrior/Desktop/texattack/textattack-env-310/lib/python3.10/site-packages/textattack/shared/utils/importing.py", line 63, in load_module_from_file
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 879, in exec_module
  File "<frozen importlib._bootstrap_external>", line 1016, in get_code
  File "<frozen importlib._bootstrap_external>", line 1073, in get_data
FileNotFoundError: [Errno 2] No such file or directory: '/Users/skywarrior/Desktop/texattack/./outputs/2024-11-28-11-41-55-920215/best_model/model.py'

二次异常:

Traceback (most recent call last):
  File "/Users/skywarrior/Desktop/texattack/textattack-env-310/bin/textattack", line 8, in <module>
    sys.exit(main())
  File "/Users/skywarrior/Desktop/texattack/textattack-env-310/lib/python3.10/site-packages/textattack/commands/textattack_cli.py", line 49, in main
    func.run(args)
  File "/Users/skywarrior/Desktop/texattack/textattack-env-310/lib/python3.10/site-packages/textattack/commands/attack_command.py", line 31, in run
    model_wrapper = ModelArgs._create_model_from_args(attack_args)
  File "/Users/skywarrior/Desktop/texattack/textattack-env-310/lib/python3.10/site-packages/textattack/model_args.py", line 194, in _create_model_from_args
    raise ValueError(f"Failed to import file {args.model_from_file}.")
ValueError: Failed to import file ./outputs/2024-11-28-11-41-55-920215/best_model/model.py.

预期行为

训练完成后,best_model目录应生成model.py文件,支持加载模型执行攻击操作。

额外需求

希望复现TextAttack论文中的对抗训练图表,但训练+攻击流程未走通,需协助完成复现并理解结果可复现性。

系统信息:

  • 操作系统:MacOS
  • 相关库版本:待补充(如torch、transformers等)
  • TextAttack版本:待补充

解决方案建议

1. 修正模型加载方式

TextAttack训练LSTM模型时,默认生成的是权重文件model.pt而非model.py。--model-from-file参数用于加载自定义Python模型文件,加载预训练权重应使用--model-path参数。修正后的攻击命令:

textattack attack --model lstm \
--model-path ./outputs/2024-11-28-11-41-55-920215/best_model/model.pt \
--dataset-from-huggingface sst2 \
--attack-recipe deepwordbug \
--log-to-txt results_deepwordbug.txt

2. 检查训练输出与依赖版本

  • 先查看best_model目录下的文件,确认模型保存的格式和文件名;
  • 补充TextAttack、torch、transformers等依赖的具体版本,不同版本的模型保存逻辑可能存在差异;
  • 查看训练日志,确认模型是否成功保存,以及保存路径是否正确。

3. 复现对抗训练图表的步骤

  1. 执行对抗训练:运行带对抗训练的命令,示例:
textattack train --model lstm --dataset sst2 --epochs 20 --early-stopping-epochs 3 --attack-recipe deepwordbug --num-train-adv-examples 1000 --seed 42
  1. 对比攻击测试:分别用相同攻击方式测试普通训练模型和对抗训练模型,记录攻击成功率、模型准确率、置信度变化等指标;
  2. 生成图表:用Matplotlib或Seaborn将收集到的数据绘制成对比图表(如攻击成功率柱状图、模型性能变化曲线);
  3. 验证可复现性:固定随机种子(上述命令中的--seed 42),重复多次训练和攻击实验,确认结果的稳定性。

内容的提问来源于stack exchange,提问作者SAHBAAZ ANSARI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 00:42:03