1

Für meinen Deep Learning-Kurs muss ich ein neuronales Netzwerk implementieren, das genau dem Tensorflow MNIST for Experts Tutorial entspricht. ,Downsampling-MNIST-Datensatz für CNN

Der einzige Unterschied ist, dass ich die Datenbank heruntersammeln muss, dann legen Sie es in das neurale Netzwerk. Sollte ich zuschneiden und Größe ändern, oder sollte ich das neuronale Netzwerk mit Parametern implementieren, die mehrere Datengrößen (28 x 28 und 14 x 14) akzeptiert.

Alle Parameter im Tensorflow-Tutorial sind statisch, daher konnte ich keinen Weg finden, den Algorithmus mit einem 14x14-Bild zu versorgen. Welches Werkzeug sollte ich für eine "optimale" Downsampling verwenden?

Antwort

0

Sie müssen die Größe der Eingabebilder auf eine feste Größe ändern (die Ihrer Beschreibung zufolge 14 * 14 entspricht). Dazu gibt es verschiedene Möglichkeiten. Zum Beispiel können Sie mit der Interpolation die Größe ändern, den zentralen Teil oder eine Ecke des Bildes zuschneiden oder nach dem Zufallsprinzip einen oder mehrere Patches (alle mit der Größe Ihrer Netzwerkeingabe) von a auswählen gib Bild. Sie können diese Methoden auch kombinieren. Zum Beispiel führen sie in VGG zuerst eine aspektbewahrende Größenänderung unter Verwendung einer bilinearen Interpolation durch und erhalten dann ein zufälliges Patch von dem resultierenden Bild (für die Testphase erhalten sie die zentrale Ernte). https://github.com/tensorflow/models/blob/master/slim/preprocessing/vgg_preprocessing.py

die einzigen Parameter, der Beispielcode im Tutorial Sie erwähnt haben, die geändert werden muss, werden die im Zusammenhang mit den Eingangsbildgrößen: Sie können VGG der Vorverarbeitung Quellcode in TensorFlow unter folgendem Link finden. Zum Beispiel müssen Sie 28s zu 14s und 784s zu 228s ändern (dies sind nur Beispiele, es gibt andere Größen, die Sie ebenfalls ändern müssen).

+0

Wenn ich alle 28 zu 14 ändere und alle 784 zu 196 ändere, erhalte ich den folgenden Fehler: InvalidArgumentError (siehe oben für Traceback): Eingabe zum Umformen ist ein Tensor mit 1024 Werten, aber die angeforderte Form erfordert a Vielfache von 3136 \t [Node: Reshape_1 = Umformen [T = DT_FLOAT, Tshape = DT_INT32, _device = "/ job: localhost/replik: 0/task: 0/cpu: 0"] (MaxPool_1, Reshape_1/shape)] ] Um dies zu versuchen, habe ich den Datensatz mit numpy.resize abgetastet, obwohl ich weiß, dass es nicht der richtige Weg ist, es zu tun –

+0

Zumindest können Sie die Zeile des Codes hinzufügen, der diesen Fehler verursacht. – Ali

+0

Sorry, ich dachte, dass ich es hinzugefügt habe, aber ich tat es nicht. Hier ist es: h_pool2_flat = tf.reshape (h_pool2, [-1, 7 * 7 * 64]) –