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

章节目录

智能系统与技术丛书·AI安全之对抗样本入门所有内容均来自互联网,一曲书屋只为原作者兜哥的小说进行宣传。欢迎各位书友支持兜哥并收藏智能系统与技术丛书·AI安全之对抗样本入门最新章节