2016-12-05 2 views
1

Im Blogeintrag Breaking Linear Classifiers on ImageNet präsentierte der Autor ein sehr einfaches Beispiel, wie ein Bild geändert werden kann, um einen Klassifikator zu täuschen. Die gegebene Technik ist ziemlich einfach: xad = x + 0.5w, wobei x der 1d Vektor und w das 1d Gewicht ist. Das ist alles gut und klar. Ich versuche jedoch, dies mit dem MNIST-Datensatz zu implementieren und blieb stecken, ohne zu wissen, wie ich diese einfache Idee in tatsächliche Ergebnisse umwandeln kann. Ich würde gerne wissen, wie man die bekannte w Matrix verwendet, um eine gegebene x Matrix (oder einfach einen abgeflachten 1d Bildvektor) zu modifizieren.Wie verwende ich die Bild- und Gewichtsmatrix, um kontradiktorische Bilder in TensorFlow zu erstellen?

Meine Bilder Matrix x der Form (1032, 784) (jedes Bild ist ein abgeflachter Vektor mit 784 Zahlen), und meine Gewichtsmatrix w hat die Form (784, 10). Die Frage ist also, wie man die im oben genannten Artikel eingeführte Idee umsetzen kann. Wie kann man allen Bildern ein gewisses Gewicht hinzufügen? Etwas wie dieses:

x + 0.5 * w 

Mein Code can be found on GitHub. Lösung mit numpy ist bevorzugt, aber mit TensorFlow wäre auch gut. Vielen Dank!

Antwort

2

herausgefunden, wie:

Wenn wir also kontradiktorische Bilder zu erzeugen sind versuchen fälschlicherweise als „6“ eingestuft werden, müssen wir nur aus der Gewichtungsmatrix, die Gewichte für „6“ greifen:

w_six = w[:, 6] 

Dann können wir einfach nicht die Matrix zusätzlich:

images_fool = x + 1.5 * w_six 
Verwandte Themen