如何使用图像和权重矩阵在 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
在 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