2017-12-26 13 views
0

I m new to tensorflow and python and I created a feed forward neural network with tensorflow that will help me to classify two groups of images. One group represents images of myself and another group represents images of a different person (I know convolutional network is better for this kind of problem but for the sake of learning I approached the FF network). All my images are stored in two separate directories. I m versuchen, die Bilder für das Training zu laden und sie in die NN zu füttern. Meine Bilder sind 272x272px RGB, daher sollte die Eingabeschicht 73984 Neuronen haben. Ich kann die Bilder nicht laden und sie über das Netzwerk einspeisen.Laden Sie benutzerdefinierte Bilder in Tensorflow

Ich habe versucht, mit diesem Ansatz:

filename_queue = tf.train.string_input_producer(tf.train.match_filenames_once("images/train/resized/*.jpg")) 

reader = tf.WholeFileReader() 
filename, content = reader.read(filename_queue) 
image = tf.image.decode_jpeg(content, channels=3) 
image = tf.cast(image, tf.float32) 
resized_image = tf.image.resize_images(image, [272, 272]) 

und dann, wenn ich laufe:

sess.run([optimizer], feed_dict={x: resized_image, y: 1}) 

I gen Fehler "Der Wert eines Futter kein tf.Tensor Objekt sein kann"

Gibt es einen besseren Weg, oder was fehlt mir hier? Danke!

Antwort

1

Ihre resized_image Variable ist ein Tensor, wie Sie es tf.image.resize_images(image, [272, 272]) initialisiert haben ... Ihr Feed hat eine numpy Array, dessen Form zu sein hat den Tensor übereinstimmen x, die Sie im Code Zum Beispiel definiert haben, in Ihrem Fall, wenn x = tf.placeholder(tf.float32, (None, 272, 272, 3)) und dann haben Sie es bacth die Bilder zu geben, die von Form sein muss (bacth_number, 272, 272, 3)

ich möchte Sie zum Lesen des Bildes folgenden Code vorschlägt ... als Beispiel diesen Code nehmen

import matplotlib.image as mpimg 
image = mpimg.imread(path_to_the_image) 
x = tf.placeholder(tf.float32, (None, 272, 272, 3)) 

und wenn ausgeführt ning es in der Sitzung:

sess.run([optimizer], feed_dict={x: image.reshape((1, image.shape[0], image.shape[1], image.shape[2])), y: 1}) 
+0

Danke. Wenn ich den Code ausführe, kann ich aufgrund meiner Netzwerkstruktur die Summe der ersten Ebene nicht berechnen, da die Anzahl der definierten Neuronen nicht mit den tatsächlichen Eingabedaten übereinstimmt. Wie groß sollte dann die Anzahl der Eingangsneuronen sein? –

+0

Setzen Sie Ihren Eingangstensor auf 'x = tf.placeholder (tf.float32, (272, 272))' und verwenden Sie PIL, um das Bild in Graustufen zu lesen 'gray_image = Image.open ('image.png'). Convert (' LA ') 'und dann füttern Sie den Tensor' x' das 'gray_image' Ihre Eingabe-Neuronen hängt von der Form des Tensors' x' – Jai

+0

Vielen Dank für Ihre Zeit! –