基本框架基于TextCNN原始项目. 将对抗训练项目中train_fgsm.py, train_free.py, train_pgd.py三个文件的训练方式整合到train_eval.py一个文件中, 运行时可通过函数train(..., which = optMethod)来切换训练方式, optMethod默认原始训练方法, optMethod="fgsm", "free", "pgd"则可指定相应的对抗训练方式.
沿用原始的数据加载器以及词向量. 对于对抗训练代码的修改, 大致不变, 首先用pdb.set_trace()弄清楚原始训练方式文本数据的各种维度, 然后将对抗训练中相应的delta以及epsilon, alpha的维度改成相应的维度即可.
两个项目的utils也整合为一个utils.py文件.
#原始训练方式
python run.py --model TextCNN
#fgsm对抗训练, 文件中的args默认参数都为fgsm的参数, 所以此处不需要指定其他参数
python run.py --model TextCNN --optMethod fgsm
#free对抗训练
python run.py --model TextCNN --optMethod free --lr_max 0.04
#pgd对抗训练
python run.py --model TextCNN --optMethod pgd --alpha 2
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。