什么是cleverhans库?

cleverhans是一个机器学习模型攻防库,里面有很多的攻防技术实现。安装只需pip install cleverhans 这句口令,随后便能调用库里的函数。

FGSM代码——可以直接运行

1、使用了Alexnet模型,然后只放了一张图片,这部分代码主要对图片进行初始化,方便使用

from __future__ import print_function
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
from torchvision import datasets, transforms
import numpy as np
import matplotlib.pyplot as plt
from torchvision import models
import cv2
from torch.autograd import Variable
#获取计算设备 默认是CPU
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")#图像加载以及预处理
image_path="data/goldfish.jpg"
orig = cv2.imread(image_path)[..., ::-1]
orig = cv2.resize(orig, (224, 224))
img = orig.copy().astype(np.float32)mean = [0.485, 0.456, 0.406]
std = [0.229, 0.224, 0.225]
img /= 255.0
img = (img - mean) / std
img = img.transpose(2, 0, 1)img=np.expand_dims(img, axis=0)img = Variable(torch.from_numpy(img).to(device).float())
print(img.shape)#使用预测模式 主要影响droupout和BN层的行为,用的是Alexnet模型,现成的
model = models.alexnet(pretrained=True).to(device).eval()
#取真实标签
label=np.argmax(model(img).data.cpu().numpy())#这里为什么要加cup()?因为np无法直接转为cuda使用,要先转cpu
print("label={}".format(label))epoch = 1#训练轮次
target = 31#原始图片的标签
target = Variable(torch.Tensor([float(target)]).to(device).long())#转换数据类型
print(target)

2、使用cleverhans实现FGSN攻击,关键代码段是

adver_example = fast_gradient_method(model, img.data, 0.01, np.inf)#(模型,图片数据,扰动值,范数:np.inf、0或1)范数的作用占时不知道
adver_target = torch.max(model(adver_example),1)[1]#取出概率最大的那个标签
#导入cleverhans中的FGSM函数
from cleverhans.torch.attacks.fast_gradient_method import fast_gradient_method
def FGSM(model):for i in range(epoch):adver_example = fast_gradient_method(model, img.data, 0.01, np.inf)adver_target = torch.max(model(adver_example),1)[1]if adver_target != target:print("FGSM attack 成功")print("epoch={} adver_target={}".format(epoch,adver_target))return adver_example,adver_target,'FGSM attack'
FGSM(model)

运行结果如下,原来标签为31,之后模型识别为114

参考链接

https://github.com/cleverhans-lab/cleverhans/tree/master/examples

cleverhans库——FGSM代码实战相关推荐

  1. 深度学习时间序列预测:LSTM算法构建时间序列单变量模型预测大气压( air pressure)+代码实战

    深度学习时间序列预测:LSTM算法构建时间序列单变量模型预测大气压( air pressure)+代码实战 长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主 ...

  2. Vue3 的学习教程汇总、源码解释项目、支持的 UI 组件库、优质实战项目

    大家好,我是你们的 猫哥,一个不喜欢吃鱼.又不喜欢喵 的超级猫 ~ 关于猫哥,大家可以看看我的年终总结 前端工程师的 2020 年终总结 - 3 年之痒. 前言 猫哥是一个常年混迹在 GitHub 上 ...

  3. 算法代码_Python进化算法之多目标优化与代码实战

    前言 自从上三篇博客详细讲解了Python遗传和进化算法工具箱及其在带约束的单目标函数值优化中的应用.利用遗传算法求解有向图的最短路径.利用进化算法优化SVM参数之后,这篇不再局限于单一的进化算法工具 ...

  4. 技术解析+代码实战,带你入门华为云政务区块链平台

    摘要:政务区块链平台是行业区块链平台的初步实践,未来在区块链技术的发展下,还会打造面向其他领域的链管平台,构建多方协同的分布式账本,让区块链应用更便捷高效的为产业服务. 本文分享自华为云社区<技 ...

  5. 【EhCache: 一款Java的进程内缓存框架】EhCache 是什么、代码实战、版本3的改进

    文章目录 1 EhCache 是什么 2 EhCache 版本2 代码实战 Demo pom.xml TestEH.java ehcache.xml 3 EhCache 版本3 代码实战 Demo p ...

  6. 【学习打卡05】可解释机器学习笔记之CAM+Captum代码实战

    可解释机器学习笔记之CAM+Captum代码实战 文章目录 可解释机器学习笔记之CAM+Captum代码实战 代码实战介绍 torch-cam工具包 可视化CAM类激活热力图 预训练ImageNet- ...

  7. 吴恩达《深度学习专项》笔记+代码实战(三):“浅度”神经网络

    在上节课中,我们学习了逻辑回归--一种经典的学习算法.我兴致勃勃地用它训练了一个猫狗分类模型,结果只得到了57%这么个惨淡的准确率.正好,这周开始学习如何实现更复杂的模型了.这次,我一定要一雪前耻! ...

  8. 吴恩达《深度学习专项》笔记+代码实战(二):简单的神经网络——逻辑回归

    这堂课要学习的是逻辑回归--一种求解二分类任务的算法.同时,这堂课会补充实现逻辑回归必备的数学知识.编程知识.学完这堂课后,同学们应该能够用Python实现一个简单的小猫辨别器. 前排提示:本文篇幅较 ...

  9. 办公自动化:轻松提取PDF页面数据,并生成Excel文件(代码实战)

    发现网上有专门做文档格式转换的网站,不过是要充会员才可以.今天来做一篇PDF转换成Excel文档的代码实战,希望大佬喜欢,哈哈,话不多说,马上进入实战环节. [阅读全文] 首先,我们一如既往的介绍一下 ...

  10. 100天精通Python(基础篇)——第32天:日志logging模块基础+代码实战

    文章目录 一.日志基础知识 1.日志是什么 2.日志的作用 3.日志的级别 4.日志的内容 5.怎么使用日志 二.logging基础介绍 1.logging库日志级别 2.logging工作流程 3. ...

最新文章

  1. LeetCode简单题之二叉搜索树的范围和
  2. AngularJS中ng-repeat对象的问题
  3. Git 撤销操作 / 回滚历史
  4. 你真的理解clear:both吗?
  5. linux ssh 多台机器无密码相互登陆方法二
  6. 配置rc.local开机自启动文件的疑问?
  7. 复习JS事件及DOM
  8. MVC中的action验证登录(ActionFilterAttribute)
  9. SVN 分支与主干的合并
  10. WiFi 的认证方法
  11. 如何将mov格式的视频转换mp4?
  12. HANA掀起数据处理狂潮 农夫山泉有点甜?
  13. 本地笔记本连接sqlserver数据库连接失败 证书链是由不受信任的颁发机构颁发的
  14. surface pro 7 使用type c耳机问题
  15. 面经|缺失值填补的7种方法(使用场景+Python代码)
  16. strtol()函数介绍
  17. 微博十年 仍然稳中求胜
  18. OSPF特殊区域之 完全NSSA区域
  19. 2021年低压电工报名考试及低压电工实操考试视频
  20. No virtual method initSDK(Landroid/content/Context;ILcom/tencent/imsdk/v2/V2

热门文章

  1. JVM之Tomcat的优化
  2. CMD启动MySQL常用命令
  3. 数据库可疑修复的方法
  4. html为知笔记模板,新建笔记模板二次开发
  5. js实现json转excel的npm包
  6. 25.jsp之生成二维码
  7. 微信扫码支付、聚合支付
  8. Windows 95 输入法编辑器
  9. 【2022年更新】手把手教你去除 WinRAR 的弹窗广告
  10. WinRAR 5.60 官方简体中文无广告弹窗版本