Python 如何使恢复的Tensorflow模型的输入大小适应批量大小1,以进行测试时间评估?
我试图在推理阶段使用一个经过训练的张量流模型。在培训期间,我使用了通过shuffle_batch函数获得的8个批量:Python 如何使恢复的Tensorflow模型的输入大小适应批量大小1,以进行测试时间评估?,python,tensorflow,deep-learning,Python,Tensorflow,Deep Learning,我试图在推理阶段使用一个经过训练的张量流模型。在培训期间,我使用了通过shuffle_batch函数获得的8个批量: image_batch, label_batch = \ tf.train.shuffle_batch([image, label], batch_size=8, capacity=2000, num_threads=2, min_after_dequeue=1
image_batch, label_batch = \
tf.train.shuffle_batch([image, label], batch_size=8,
capacity=2000, num_threads=2,
min_after_dequeue=1000)
以下是推理阶段的相关部分:
with tf.Session() as sess:
saver = tf.train.import_meta_graph('model_enc_dec-0.meta')
saver.restore(sess, tf.train.latest_checkpoint('./'))
graph = tf.get_default_graph()
pred = tf.get_collection('logits_key')[0]
image_batch_tensor = tf.get_collection('image_batch_key')[0]
.......
.......
# image_loaded_from_disk is of size (1, 384, 384, 3)
feed_dict = {image_batch_tensor:image_loaded_from_disk}
pred_np = sess.run([pred], feed_dict=feed_dict)
以下是我在恢复的模型上运行推断时在sess.run()行获得的错误:
ValueError:无法为Tensor u'shuffle_批次:0'提供形状(1384384,3)的值,该批次具有形状'(8384384,3)'
如何调整经过训练的模型,使其接受单个图像以在模型中向前移动?您是否对占位符的形状使用了
None
?如果是这样的话,也许可以用形状(1384384,3)号的新占位符替换image\u batch\u tensor
。shuffle\u batch
刚刚返回了一个大小的张量(batch\u size,384384,3)。我无法选择无
。但是,我在shuffle\u batch
中找到了一个名为allow\u smaller\u final\u batch=True的选项。我想知道这是否会导致训练速度变慢。将allow_minger_final_batch=True
添加到tf.train.shuffle_batch
会冻结训练代码。它甚至不训练。重要的问题是:变量image\u batch\u tensor
如何声明?在训练阶段,我将tensorimage\u batch
添加到名为'image\u batch\u key'
的集合中,如下所示:tf.add\u to\u collection('image\u batch\u key',image\u batch)
。这与加载元图后获得的张量相同。