Ich habe mit der Tensorflow-Bibliothek gespielt und die Tutorials gemacht. Jetzt wollte ich mit meinen eigenen Daten spielen, aber ich versage schrecklich. Dies ist vielleicht eine Noob-Frage, aber ich kann es nicht verstehen.
Ich verwende dieses Beispiel: https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3%20-%20Neural%20Networks/convolutional_network.py
Ich möchte meine eigenen Bilder verwenden, um meine Bilder für die Verwendung mit Tensorflow zu konvertieren. Ich verwende Folgendes: https://github.com/HamedMP/ImageFlow/blob/master/ImageFlow.py
Nun ändere ich die Parameter im Beispiel hieraus:
n_input = 784
n_classes = 10
zu diesem:
n_input = 9216
n_classes = 2
Ich habe das gemacht, weil meine Bilder 96 * 96 sind und es nur 2 Klassen meiner Bilder gibt
Ich ändere auch die Gewichte und Vorurteile auf die Zahlen, die ich brauche.
Ich habe die Daten so gelesen:
batch_xs = imgReader.read_images(pathname);
imgReader ist die ImageFlow-Datei
aber wenn ich versuche, es auszuführen, erhalte ich einen Fehler:
ValueError: Cannot feed value of shape (104, 96, 96, 1) for Tensor
u'Placeholder:0', which has shape (Dimension(None), Dimension(9216))
Ich habe das Gefühl, ich übersehe etwas Kleines, sehe es aber nicht.
Dieser Fehler tritt auf, weil die Form der zu versuchenden Daten (104 x 96 x 96 x 1) nicht der Form des Eingabeplatzhalters entspricht (batch_size
x 9216, wobei batch_size
variabel sein kann).
Damit es funktioniert, fügen Sie die folgende Zeile hinzu, bevor Sie einen Trainingsschritt ausführen:
batch_xs = np.reshape(batch_xs, (-1, 9216))
Dies verwendet numpy, um die eingelesenen Bilder, die 4-D-Arrays von batch_size
x h x w x -Kanälen sind, in eine batch_size
x 9216-Elementmatrix umzuwandeln, wie vom Platzhalter erwartet.
Ich habe dieses Problem durch ein Upgrade des Tensorflows durch das Rohr gelöst.