2017-03-14 79 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})

...有你有它