我正在尝试为我的张量流预测实现队列但是得到以下错误 -
你必须使用dtype float和shape [1024,1024,3]为占位符张量'in'提供一个值
如果我使用feed_dict,尝试将feed_dict替换为队列,该程序工作正常 .
该程序基本上采用位置列表并将图像np数组传递给输入张量 .
for each in positions:
y,x = each
images = img[y:y+1024,x:x+1024,:]
a = images.astype('float32')
q = tf.FIFOQueue(capacity=200,dtypes=dtypes)
enqueue_op = q.enqueue(a)
qr = tf.train.QueueRunner(q, [enqueue_op] * 1)
tf.train.add_queue_runner(qr)
data = q.dequeue()
graph=load_graph('/home/graph/frozen_graph.pb')
with tf.Session(graph=graph,config=tf.ConfigProto(log_device_placement=True)) as sess:
p_boxes = graph.get_tensor_by_name("cat:0")
p_confs = graph.get_tensor_by_name("sha:0")
y = [p_confs, p_boxes]
x = graph.get_tensor_by_name("in:0")
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(coord=coord,sess=sess)
confs, boxes = sess.run(y)
coord.request_stop()
coord.join(threads)
如何在会话中运行图形时确保我填充到队列的输入数据 .
在我原来的运行中,我打电话给
confs,boxes = sess.run([p_confs,p_boxes],feed_dict = feed_dict_testing)
1 回答
我建议不要使用队列来解决这个问题,并切换到新的
tf.data
API . 特别是tf.data.Dataset.from_generator()使得从Python函数提供数据变得更容易 . 您可以将代码重写为更简单,如下所示:请注意,在您的程序中,
data
张量与您在load_graph()
中加载的图形之间没有任何关联(至少,假设load_graph()
没有从全局状态中抓取data
!) . 您可能需要使用tf.import_graph_def()和input_map
参数将data
与冻结图形中的一个张量(可能是"in:0"
?)相关联以完成任务 .