我是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不依赖于输入图像这是问题任何解决方案吗?
提前致谢
答案 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是输入图像