2017-01-02 7 views
2

Wie überprüfe ich die Anzahl der Dateinamen, die string_input_producer gelesen hat? Abhängig von der Größe der Eingabedaten werden verschiedene Operationen ausgeführt, so dass ich wissen muss, wie viele Bilder gelesen oder gelesen wurden.tensorflow Größe des string_input_producer

Code unten sagt mir nicht, wie viele Bilder ich gelesen habe oder zu lesen bin.

import tensorflow as tf 
import matplotlib.pyplot as plt 

# Make a queue of file names including all the JPEG images files in the relative image directory. 
filename_queue = tf.train.string_input_producer(tf.train.match_filenames_once("./MNIST_data/*.png")) 

reader = tf.WholeFileReader() 
key, value = reader.read(filename_queue) 

image = tf.image.decode_png(value) # use png or jpg decoder based on your files. 

num_preprocess_threads = 1 
min_queue_examples = 256 
batch_size=2; 
images = tf.train.shuffle_batch([image], batch_size, min_queue_examples + 3 * batch_size, num_threads=num_preprocess_threads, min_after_dequeue=min_queue_examples) 

with tf.Session() as sess: 
    sess.run(tf.initialize_all_variables()) 

    coord = tf.train.Coordinator() 
    threads = tf.train.start_queue_runners(coord=coord) 
    t_image = image.eval() #here is your image Tensor :) 
    fig = plt.figure() 
    plt.imshow(t_image) 
    plt.show() 

    coord.request_stop() 
    coord.join(threads) 

Antwort

1

Funktionen wie string_input_producer wird eine Warteschlange aktuelle Diagramm hinzuzufügen, die nur dequeue nur ein Beispiel jedes Mal. Normalerweise werden die Ausgangstensoren Funktionen wie tf.train.shuffle_batch zugeführt, was Sie wollen. Das Argument batch_size dieser Funktion können steuern, wie viele Beispiele jedes Mal, als die Eingabe des Modells aus der Warteschlange entfernt

UPDATE:

, wenn Sie, ob Ihre Daten eingeben möchten überprüfen korrekt ist, können Sie es laufen aus mit sess.run(my_img) was Ihnen einen numpy.array Tensor gibt. Sie können das Element dieses Tensors direkt betrachten oder einfach mit matplotlib plotten.

sicherstellen, dass Sie bereits Warteschlange Läufer vor sess.run oder Ihr Programm hängen immer

+0

Haben Sie einen Algorithmus für Ihre Antwort? Ich habe meinen Code bearbeitet, um shuffle_batch einzubinden, aber ich bekomme Fehler. Können Sie den vollständigen Code anzeigen, um das Bild zu lesen und dann zu plotten? Bitte fensortlow ist hardd – kong

+1

welche Art von Fehler haben Sie? Ich schaute auf Ihren Code, ich denke, es ist in Ordnung –

+0

es heißt, alle Formen müssen vollständig definiert werden. der Fehler zeigt auf tf.train.shuffle_batch – kong

0

string_input_producer kehrt ein Sie zurück Standard FIFOQueue (es gibt Ihnen ein input_producer und es gibt Ihnen ein queue.

A FIFOQueue begonnen haben hat keine Informationen über die Anzahl der gelesenen Elemente, nur die Anzahl der Elemente befindet sich derzeit in einer Warteschlange (q.size()) Wenn Sie wissen möchten, wie viele Elemente gelesen wurden, müssen Sie manuell einen Zähler hinzufügen, den Sie jeweils erhöhen Mal, wenn Sie ein Element gelesen haben: