2017-03-28 241 views
0

我学习使用Tensorflow,我写道,从MNIST分贝得知这个Python脚本,保存模型,并进行图像上的预测:如何恢复Tensorflow模型

X = tf.placeholder(tf.float32, [None, 28, 28, 1]) 
W = tf.Variable(tf.zeros([784, 10], name="W")) 
b = tf.Variable(tf.zeros([10]), name="b") 
Y = tf.nn.softmax(tf.matmul(tf.reshape(X, [-1, 784]), W) + b) 
# ... 
init = tf.global_variables_initializer() 

saver = tf.train.Saver() 
with tf.Session() as sess: 
    sess.run(init) 

    # ... learning loop 

    saver.save(sess, "/tmp/my-model") 

    # Make a prediction with an image 
    im = numpy.asarray(Image.open("digit.png"))/255 
    im = im[numpy.newaxis, :, :, numpy.newaxis] 
    dict = {X: im} 
    print("Prediction: ", numpy.array(sess.run(Y, dict)).argmax()) 

的预测是正确的,但我无法恢复保存的模型以供重复使用。 我写道,试图恢复模型,并作出同样的预测这个其他脚本:

X = tf.placeholder(tf.float32, [None, 28, 28, 1]) 
W = tf.Variable(tf.zeros([784, 10]), name="W") 
b = tf.Variable(tf.ones([10])/10, name="b") 
Y = tf.nn.softmax(tf.matmul(tf.reshape(X, [-1, 784]), W) + b) 

init = tf.global_variables_initializer() 

with tf.Session() as sess: 
    sess.run(init) 
    saver = tf.train.import_meta_graph('/tmp/my-model.meta') 
    saver.restore(sess, tf.train.latest_checkpoint('/tmp/')) 

    # Make a prediction with an image 
    im = numpy.asarray(Image.open("digit.png"))/255 
    im = im[numpy.newaxis, :, :, numpy.newaxis] 
    dict = {X: im} 
    print("Prediction: ", numpy.array(sess.run(Y, dict)).argmax()) 

但预测是错误的。 如何恢复我的变量并进行预测? 感谢

回答

1

当测试,注释此行

# saver = tf.train.import_meta_graph('/tmp/my-model.meta') 

将解决你的问题。

import_meta_graph将创建保存在'.meta'文件中的新图形/模型,并且新模型将与您手动创建的模型共存。 saver已分配给新模型,因此saver.restore会将训练后的权重恢复到新模型,但sess将使用您手动创建的模型运行。

相关问题