2017-03-14 3 views
-2

Ich verwende das Tensorflow for Poets-Tutorial, um ein Bild zu klassifizieren. Ich benutze den unten stehenden Code, um ein Bild zu klassifizieren, würde aber statt eines JPEGs ein numpliges Array als Bild einspeisen. Wie würde sich der Code ändern?Ein numpliges Array-Bild klassifizieren

import tensorflow as tf 
import sys 

# change this as you see fit 
image_path = sys.argv[1] 

# Read in the image_data 
image_data = tf.gfile.FastGFile(image_path, 'rb').read() 

# Loads label file, strips off carriage return 
label_lines = [line.rstrip() for line 
        in tf.gfile.GFile("/tf_files/retrained_labels.txt")] 

# Unpersists graph from file 
with tf.gfile.FastGFile("/tf_files/retrained_graph.pb", 'rb') as f: 
    graph_def = tf.GraphDef() 
    graph_def.ParseFromString(f.read()) 
    _ = tf.import_graph_def(graph_def, name='') 

with tf.Session() as sess: 
    # Feed the image_data as input to the graph and get first prediction 
    softmax_tensor = sess.graph.get_tensor_by_name('final_result:0') 

    predictions = sess.run(softmax_tensor, \ 
      {'DecodeJpeg/contents:0': image_data}) 

    # Sort to show labels of first prediction in order of confidence 
    top_k = predictions[0].argsort()[-len(predictions[0]):][::-1] 

    for node_id in top_k: 
     human_string = label_lines[node_id] 
     score = predictions[0][node_id] 
print('%s (score = %.5f)' % (human_string, score)) 

image_data = tf.gfile.FastGFile(image_path, 'rb').read() - Wenn ich nicht aus einer Datei zu lesen, ich denke ich nicht, dies brauchen.

predictions = sess.run(softmax_tensor, {'DecodeJpeg/contents:0': image_data}) - Ich weiß, dass ich diesen Aspekt des feed_dict nicht überschreiben muss, aber was soll ich stattdessen tun?

Insgesamt, wie kann ich sicherstellen, dass ein Nparray, das ich ein Bild darstellt, für die Vorhersage richtig verwendet werden?

Antwort

1

Vielen Dank an alle, ich die Antwort gefunden zu haben:

soll ich mit Größe (100,132,3) ein 3-dimensionales numpy Array image genannt.

Alles, was ich tun müssen, ist es in den softmax Klassifizierer anstatt DecodeJpeg/contents:0 wie so ...

predictions = sess.run(softmax_tensor, {'DecodeJpeg:0': image})

... und da haben Sie es

mit 'DecodeJpeg:0 passieren
Verwandte Themen