2017-03-14 31 views
-2

我使用的Tensorflow爲詩人教程的圖像進行分類。我使用下面的代碼到的圖像進行分類,但想在numpy的陣列作爲圖像而不是JPEG,如何將代碼必須改變養活?判斷一個numpy的陣列圖像

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() - 如果我不是從文件中讀取,我想我不需要這些。

predictions = sess.run(softmax_tensor, {'DecodeJpeg/contents:0': image_data}) - 我知道我不需要重寫feed_dict的這個方面,但是我應該怎麼做呢?

總的來說,我怎麼能確保一個nparray我有一個代表圖像進行適當用於預測?

回答

1

謝謝大家,我已經找到了答案:

認爲我有大小3維numpy的陣列(100,132,3)稱爲image

所有我需要做的就是把它傳遞到使用'DecodeJpeg:0,而不是DecodeJpeg/contents:0像這樣的SOFTMAX分類...

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

...有你有它