python - 如何在 TensorFlow 中使用图像和权重矩阵创建对抗图像?

标签 python numpy matrix tensorflow matrix-multiplication

Breaking Linear Classifiers on ImageNet在博客文章中,作者提出了一个非常简单的示例,说明如何修改图像来欺骗分类器。给出的技术非常简单:xad = x + 0.5w,其中 x 是一维向量,w 是一维权重。这一切都很好而且很清楚。然而,我试图用 MNIST 数据集来实现这一点,但遇到了困难,不知道如何将这个简单的想法转化为实际结果。我想知道如何使用已知的 w 矩阵来修改给定的 x 矩阵(或简单地展平一维图像向量)。

我的图像矩阵 x 的形状为 (1032, 784)(每个图像都是具有 784 个数字的展平向量),我的权重矩阵 w 的形状为(784、10)。那么问题来了,如何实现上述文章中介绍的想法呢?特别是,如何为所有图像添加一点权重?像这样的事情:

x + 0.5 * w

我的代码can be found on GitHub 。使用 numpy 的解决方案是首选,但使用 TensorFlow 也可以。谢谢!

最佳答案

弄清楚如何:

因此,如果我们尝试创建被错误分类为“6”的对抗性图像,我们只需从权重矩阵中获取“6”的权重:

w_six = w[:, 6]

然后我们可以简单地进行矩阵加法:

images_fool = x + 1.5 * w_six

关于python - 如何在 TensorFlow 中使用图像和权重矩阵创建对抗图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40966589/

相关文章:

graphics - 旋转向量与四元数

python - 将数据框按列值分组,同时对另一列求和

带有变量的 Python 正则表达式 findall

python - 如何从任意深度嵌套的字典中删除

python-3.x - MoviePy 错误 : The system cannot find the file specified

Python:将 numpy 符号数组转换为 int 并返回

arrays - 在 3D 数组中查找连续值

python - Django:在数据 View 中添加新字段

python - 如何从 2D numpy 数组中删除第一行和最后一行和最后一列?

opengl - LookAt函数: I'm going crazy