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

How to use image and weight matrix to create adversarial images in TensorFlow?

Breaking Linear Classifiers on ImageNet 博客 post 中,作者提供了一个关于如何修改图像以欺骗分类器的非常简单的示例。给出的技术非常简单:xad = x + 0.5w 其中 x 是 1d 向量,w 是 1d 权重。这一切都很好,很清楚。然而,我试图用 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