Tensorflow:用于预测的sess.run()不会更改值

时间:2018-05-26 17:35:35

标签: python tensorflow machine-learning

我是tf的新手,我正在研究图像分类器。我已经建立了模型。我使用sess.run()来预测学习模型中的单个图像,但无论输入是什么,输出标签都不会更改。

def predict():

tf.reset_default_graph()
with tf.Session() as sess:

    new_saver = tf.train.import_meta_graph('~/trained-model.ckpt.meta')
    new_saver.restore(sess, '~/trained-model.ckpt')

    y_pred = tf.get_default_graph().get_tensor_by_name('y_pred:0') #softmax(output_of_last_layer) is equal to y_pred
    X = tf.get_default_graph().get_tensor_by_name('X:0')
    final = imageprepare('jean.jpeg')
    final = np.asarray(final) 

    print(type(final))
    final = np.reshape(final,[784,1])
    print (type(final))

    output_label = sess.run(y_pred, feed_dict={X: final}) 
    print(output_label)

无论输入是什么,output_label值都保持不变,这是形状的np数组[number_of_lables,1]

我训练了一个模型并保存了它。我现在正在尝试不同的输入图像,以查看它们属于哪个类。如果我更改任何输入图像,它应该更改output_label,因为output_label包含答案的接近概率但是output_label不依赖于输入图像这是问题任何解决方案吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

没有修改output_label

值的功能

解决这个问题:

img1 = imageprepare('x.jpeg')
img1 = np.asarray(img1)
img2 = imageprepare('y.jpeg')
img2 = np.asarray(img2) 
img3 = imageprepare('z.jpeg')
img3 = np.asarray(img3) 

input_images = [img1,img2,img3]    
output_label = sess.run(y_pred, feed_dict={X: input_images})

其中x,y,z是输入图像