2016-12-05 10 views
1

ブログの投稿Breaking Linear Classifiers on ImageNetでは、画像を変更して分類器をだます方法について、非常に簡単な例を示しました。与えられたテクニックはとても簡単です:xad = x + 0.5wここで、xは1dベクトル、wは1dウェイトです。これはすべて良いとクリアです。しかし、私はこれをMNISTデータセットで実装しようとしており、この単純な考え方を実際の結果に変える方法は知られていません。私は与えられたx行列(または単純に平坦化された1次元画像ベクトル)を変更するために既知のw行列を使う方法を知りたいと思います。TensorFlowで画像と重み行列を使って敵対的な画像を作成するには?

私の画像マトリックスxは、形状(1032,784)(各画像は784個の数字を持つ平坦化ベクトル)であり、私の重みマトリックスwは形状(784,10)を持っています。ですから、上記の記事で紹介したアイデアをどのように実装するのかという疑問はありますか?特に、すべての画像にビットウェイトを追加する方法は?このようなもの:

x + 0.5 * w 

マイコードcan be found on GitHub numpyで解決することをお勧めしますが、TensorFlowを使用しても問題ありません。ありがとう!

答えて

2

方法を考え出した:私たちは誤って「6」と分類されるように敵対イメージを作成しようとしているのであれば、我々は唯一の重み行列から「6」の重みを取得する必要があり

w_six = w[:, 6] 

その後、我々は単に行列の加算を行うことができます。

images_fool = x + 1.5 * w_six 
関連する問題