9.5.3 在Cleverhans中进行对抗训练

    9.5.3 在cleverhans中进行对抗训练
    对抗训练的过程就是用生成的对抗样本和原始训练数据重新训练模型的过程,我们继续使用上例中生成的modelbasiccnn和对抗样本。为了与之前训练的模型区别开来,我们重新实例化modelbasiccnn和fgsm算法实例。
    model2 = modelbasiccnn('model2', nb_classes, nb_filters)
    fgsm2 = fastgradientmethod(model2, sess=sess)
    def attack(x):
    return fgsm2.generate(x, **fgsm_params)
    loss2 = crossentropy(model2, smoothing=label_smoothing, attack=attack)
    preds2 = model2.get_logits(x)
    生成对抗样本并重新训练模型。
    adv_x2 = attack(x)
    train(sess, loss2, x_train, y_train, evaluate=evaluate2,
    args=train_params, rng=rng, var_list=model2.get_params())
    其中evaluate2函数用于对抗训练时打印中间结果。
    def evaluate2():
    # 计算对抗训练的模型在原始数据上的准确度
    do_eval(preds2, x_test, y_test, 'adv_train_clean_eval', false)
    # 计算对抗训练的模型在对抗样本上的准确度
    do_eval(preds2_adv, x_test, y_test, 'adv_train_adv_eval', true)
    经过对抗训练,可以成功识别对抗样本中的93.55%。
    test accuracy on legitimate examples: 0.9899
    test accuracy on adversarial examples: 0.9355
新书推荐: [影视同人] 女配爱平淡 我的亿万冷少 [综英美] 眷养莱克特 全民游戏修仙,我有人生模拟器 [综漫] 小教主的刀子精们 军师王妃 [原神] 转生提瓦特魔神,但可怜弱小又无助 [综漫] 不可控恶玉扮演指南 [足球同人] 伴你高飞 [海贼同人] 间谍在伟大航路中成为五皇