CNN卷积神经网络手写数字集实现对抗样本与对抗攻击实战(附源码)

简介: CNN卷积神经网络手写数字集实现对抗样本与对抗攻击实战(附源码)

需要源码请点赞关注收藏后评论区留言私信~~~

在讨论卷积神经网络时,给出了一个用卷积神经网络来完成手写体数学识别的示例,其TensorFlow2版本能达到0.986的识别率。用该卷积神经网络模型来示例对抗样本对神经网络模型的攻击。

用训练好的卷积神经网络模型对该对抗样本图片进行预测,得到错误结果为3。  

记原始样本为x,原始样本的对抗样本为x_adv,添加的扰动为r。它们之间的关系为:

一般来讲,r应尽可能小,体现在对图像的攻击上,就是修改后的对抗样本尽量不被人眼察觉。 被攻击模型的输入输出关系用映射F来表示:

y=F(x)

其中,y为模型对样本x的预测值。

非定向对抗攻击是找到一个尽量小的r,使得:

F(x_adv)=F(x+r)≠y

定向对抗攻击是指定输出的攻击。记指定的攻击目标为y_target,定向对抗攻击就是找到一个尽量小的r,使得:

F(x_adv)=y_target≠y

原图片预测结果正确

添加扰动后预测结果错误

 

部分代码如下

import matplotlib.pyplot as plt
import numpy as np
img = X_val[0]
label = y_val[0]
img = img.reshape(1, 28, 28, 1)
img_predict = model.predict([img], batch_size=None)
img1 = img.reshape(28, 28)
plt.imshow(img1, cmap = 'binary')
print('标签:', np.argmax(label), '模型预测:', np.argmax(img_predict))
epsilon = 0.09
adv_x = img + epsilon * perturbations.numpy()
img_predict = model.predict([adv_x], batch_size=None)
print(np.argmax(img_predict))
plt.imshow(adv_x.reshape(28, 28), cmap = 'binary')
import tensorflow as tf
loss_object = tf.keras.losses.CategoricalCrossentropy()
# 计算梯度
def compute_grad(input_image, input_label):
    with tf.GradientTape() as g:
        g.watch(tensor=input_image) # 将输入样本作为要计算梯度的变量
        prediction = model(input_image)
        loss = loss_object(input_label, prediction)
    gradient = g.gradient(loss, input_image) # 求损失函数的梯度
    return gradient

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
10天前
|
机器学习/深度学习 人工智能 自动驾驶
什么是人工智能领域的卷积神经网络
什么是人工智能领域的卷积神经网络
20 0
|
10天前
|
机器学习/深度学习 算法 计算机视觉
卷积神经网络中的卷积层,如何提取图片的特征?
卷积神经网络中的卷积层,如何提取图片的特征?
22 0
|
23天前
|
机器学习/深度学习 存储 自然语言处理
卷积神经元网络CNN基础
卷积神经元网络CNN基础
31 1
|
23天前
|
机器学习/深度学习 算法 PyTorch
【PyTorch实战演练】Fast R-CNN中的RoI(Region of Interest)池化详解
【PyTorch实战演练】Fast R-CNN中的RoI(Region of Interest)池化详解
27 1
|
23天前
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch实战演练】AlexNet网络模型构建并使用Cifar10数据集进行批量训练(附代码)
【PyTorch实战演练】AlexNet网络模型构建并使用Cifar10数据集进行批量训练(附代码)
39 0
|
23天前
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch实战演练】使用Cifar10数据集训练LeNet5网络并实现图像分类(附代码)
【PyTorch实战演练】使用Cifar10数据集训练LeNet5网络并实现图像分类(附代码)
40 0
|
6天前
|
机器学习/深度学习 自然语言处理 算法
|
23天前
|
机器学习/深度学习 算法 PyTorch
【PyTorch实战演练】深入剖析MTCNN(多任务级联卷积神经网络)并使用30行代码实现人脸识别
【PyTorch实战演练】深入剖析MTCNN(多任务级联卷积神经网络)并使用30行代码实现人脸识别
43 2
|
23天前
|
机器学习/深度学习 自然语言处理 PyTorch
【PyTorch实战演练】基于全连接网络构建RNN并生成人名
【PyTorch实战演练】基于全连接网络构建RNN并生成人名
23 0
|
23天前
|
机器学习/深度学习 PyTorch 算法框架/工具
卷积神经元网络中常用卷积核理解及基于Pytorch的实例应用(附完整代码)
卷积神经元网络中常用卷积核理解及基于Pytorch的实例应用(附完整代码)
20 0