tensorflow错误 - 您必须为占位符张量'in'提供一个值

时间:2017-11-15 19:10:23

标签: tensorflow tensor

我正在尝试为我的张量流预测实现队列,但得到以下错误 -

你必须使用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 个答案:

答案 0 :(得分:0)

我建议不要使用队列来解决此问题,并切换到新的public function destroy($id) { $post = Post::first($id); $user = auth()->user(); print_r($post); print_r($user); $mypost = $user->can('delete', $post); if($mypost){ Post::destroy($id); } } API。特别是tf.data.Dataset.from_generator()可以更容易地从Python函数中提供数据。您可以将代码重写为更简单,如下所示:

tf.data

请注意,在您的程序中,def generator(): for y, x in positions: images = img[y:y+1024,x:x+1024,:] yield images.astype('float32') dataset = tf.data.Dataset.from_generator( generator, tf.float32, [1024, 1024, img.shape[3]]) # Add any extra transformations in here, like `dataset.batch()` or # `dataset.repeat()`. # ... iterator = dataset.make_one_shot_iterator() data = iterator.get_next() 张量与您在data中加载的图表之间没有任何关联(至少,假设load_graph()没有抓住load_graph()来自全球的状态!)。您可能需要使用tf.import_graph_def()data参数将input_map与冻结图形中的一个张量(可能是data?)相关联,以完成任务。< / p>