我是TensorFlow的新手。我已经用我的训练数据成功训练了inception_v3模型;现在我想预测几个图像的输出,但它们的数量与训练中的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 :(得分:0)
这里你明确设置了输入占位符x batch_size
的第一个dim,所以每次你需要使用相同的dim来提供numpy.array类型张量时,你的程序就会出错。
解决方案可以设置任何占位符(输入和标签)None
的第一个暗淡,以便在训练和验证期间此暗淡可以是任何int或不同
更新:
如果您已经使用固定的第一个昏暗的占位符输入(和标签)训练了您的模型,则可以在使用tf.train.import_meta_graph(grapg_def=your_graph_def, input_map={'your_train_input_placedholer_name':new_placeholder})
恢复此图表时对其进行更改
这里new_placeholder
是您使用不固定的第一个暗淡创建的占位符。