2016-12-28 308 views
0

我是TensorFlow的新手。我已经用我的训练数据成功训练了inception_v3模型;现在我想预测几个图像的输出,但是它们的数量与训练中的batch_size不同。我做到了,如下所示:tensorflow恢复变量当batch_size在测试中不同于batch_size在训练

from tensorflow.contrib.slim.nets import inception_v3 as inception 
checkpoint_dir =os.path.join('runs', configure_name, 'checkpoints') 
checkpoint_file = tf.train.latest_checkpoint(checkpoint_dir) 
graph = tf.Graph() 
with graph.as_default(): 
    session_conf = tf.ConfigProto(
     allow_soft_placement=True, 
     log_device_placement=False) 
    sess = tf.Session(config=session_conf) 
    with sess.as_default(): 
     # Load the saved meta graph and restore variables 
     saver = tf.train.import_meta_graph("{}.meta".format(checkpoint_file)) 
     saver.restore(sess, checkpoint_file) 

     x = tf.placeholder(tf.float32, [batch_size,input_size,input_size,num_channels], name='images') 
     _, end_points = inception.inception_v3(x,num_classes=num_classes, is_training=False) 
     outputs = end_points['Predictions']   

     scores = sess.run(outputs, feed_dict={x: x_eval}) 
     predictions = np.argmax(scores,axis=1) 

它给我的错误如下:

FailedPreconditionError: Attempting to use uninitialized value InceptionV3/Conv2d_1a_3x3/weights_1 

看来,在“输出”的模型参数尚未成功喂养,但我不知道如何去做吧。有任何想法吗?谢谢。

回答

0

在这里,您明确地设置输入占位符x的第一个昏暗x batch_size,所以每次您需要用相同的昏暗提供numpy.array类型张量或您的程序将出错。

一个解决方案可以是设置任何占位符(输入和标签)None的第一暗淡,使这种暗淡可以是任何int或不同的训练和验证过程中

UPDATE:

如果你已经受过训练您的模型具有固定的第一个昏暗的占位符输入(和标签),您可以在恢复此图时使用tf.train.import_meta_graph(grapg_def=your_graph_def, input_map={'your_train_input_placedholer_name':new_placeholder}) 此处更改它new_placeholder是您新创建的未固定第一个昏暗的占位符。

+0

它的工作原理。谢谢。 –

相关问题