cleverhans库——FGSM代码实战
什么是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代码实战相关推荐
- 深度学习时间序列预测:LSTM算法构建时间序列单变量模型预测大气压( air pressure)+代码实战
深度学习时间序列预测:LSTM算法构建时间序列单变量模型预测大气压( air pressure)+代码实战 长短期记忆(Long short-term memory, LSTM)是一种特殊的RNN,主 ...
- Vue3 的学习教程汇总、源码解释项目、支持的 UI 组件库、优质实战项目
大家好,我是你们的 猫哥,一个不喜欢吃鱼.又不喜欢喵 的超级猫 ~ 关于猫哥,大家可以看看我的年终总结 前端工程师的 2020 年终总结 - 3 年之痒. 前言 猫哥是一个常年混迹在 GitHub 上 ...
- 算法代码_Python进化算法之多目标优化与代码实战
前言 自从上三篇博客详细讲解了Python遗传和进化算法工具箱及其在带约束的单目标函数值优化中的应用.利用遗传算法求解有向图的最短路径.利用进化算法优化SVM参数之后,这篇不再局限于单一的进化算法工具 ...
- 技术解析+代码实战,带你入门华为云政务区块链平台
摘要:政务区块链平台是行业区块链平台的初步实践,未来在区块链技术的发展下,还会打造面向其他领域的链管平台,构建多方协同的分布式账本,让区块链应用更便捷高效的为产业服务. 本文分享自华为云社区<技 ...
- 【EhCache: 一款Java的进程内缓存框架】EhCache 是什么、代码实战、版本3的改进
文章目录 1 EhCache 是什么 2 EhCache 版本2 代码实战 Demo pom.xml TestEH.java ehcache.xml 3 EhCache 版本3 代码实战 Demo p ...
- 【学习打卡05】可解释机器学习笔记之CAM+Captum代码实战
可解释机器学习笔记之CAM+Captum代码实战 文章目录 可解释机器学习笔记之CAM+Captum代码实战 代码实战介绍 torch-cam工具包 可视化CAM类激活热力图 预训练ImageNet- ...
- 吴恩达《深度学习专项》笔记+代码实战(三):“浅度”神经网络
在上节课中,我们学习了逻辑回归--一种经典的学习算法.我兴致勃勃地用它训练了一个猫狗分类模型,结果只得到了57%这么个惨淡的准确率.正好,这周开始学习如何实现更复杂的模型了.这次,我一定要一雪前耻! ...
- 吴恩达《深度学习专项》笔记+代码实战(二):简单的神经网络——逻辑回归
这堂课要学习的是逻辑回归--一种求解二分类任务的算法.同时,这堂课会补充实现逻辑回归必备的数学知识.编程知识.学完这堂课后,同学们应该能够用Python实现一个简单的小猫辨别器. 前排提示:本文篇幅较 ...
- 办公自动化:轻松提取PDF页面数据,并生成Excel文件(代码实战)
发现网上有专门做文档格式转换的网站,不过是要充会员才可以.今天来做一篇PDF转换成Excel文档的代码实战,希望大佬喜欢,哈哈,话不多说,马上进入实战环节. [阅读全文] 首先,我们一如既往的介绍一下 ...
- 100天精通Python(基础篇)——第32天:日志logging模块基础+代码实战
文章目录 一.日志基础知识 1.日志是什么 2.日志的作用 3.日志的级别 4.日志的内容 5.怎么使用日志 二.logging基础介绍 1.logging库日志级别 2.logging工作流程 3. ...
最新文章
- LeetCode简单题之二叉搜索树的范围和
- AngularJS中ng-repeat对象的问题
- Git 撤销操作 / 回滚历史
- 你真的理解clear:both吗?
- linux ssh 多台机器无密码相互登陆方法二
- 配置rc.local开机自启动文件的疑问?
- 复习JS事件及DOM
- MVC中的action验证登录(ActionFilterAttribute)
- SVN 分支与主干的合并
- WiFi 的认证方法
- 如何将mov格式的视频转换mp4?
- HANA掀起数据处理狂潮 农夫山泉有点甜?
- 本地笔记本连接sqlserver数据库连接失败 证书链是由不受信任的颁发机构颁发的
- surface pro 7 使用type c耳机问题
- 面经|缺失值填补的7种方法(使用场景+Python代码)
- strtol()函数介绍
- 微博十年 仍然稳中求胜
- OSPF特殊区域之 完全NSSA区域
- 2021年低压电工报名考试及低压电工实操考试视频
- No virtual method initSDK(Landroid/content/Context;ILcom/tencent/imsdk/v2/V2