我可以帮助我调试tf.PaddingFIFOQueue错误吗?

时间:2017-04-04 06:06:34

标签: tensorflow shapes

由于我不熟悉tensorflow,我不知道如何定义tf.PaddingFIFOQueue的形状以将元素设置为N * 1数组。我认为以下代码应该可以工作,但它产生错误......

你可以给我一个提示来调试吗?

import tensorflow as tf
import numpy as np

a = tf.placeholder(dtype= tf.float32, shape = [None, 1])
b = tf.placeholder(dtype= tf.float32, shape = [None, 1])

ab_value = np.random.randn(5,1)
m = ab_value.reshape(-1, 1)

q_ab = tf.PaddingFIFOQueue(32, ['float32', 'float32'], shapes = [[None, 1], [None, 1]])
q_ab_en = q_ab.enqueue_many([a, b])

sess = tf.Session()
sess.run(q_ab_en, feed_dict = {a: ab_value, b: ab_value})

#a_dq, b_dq = q_ab.dequeue_many(1)
  

文件“C:\ Users \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ tensorflow \ python \ ops \ data_flow_ops.py”,   第375行,enqueue_many   val.get_shape()[1:]。assert_is_compatible_with(形状)
  文件“C:\ Users \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ tensorflow \ python \ framework \ tensor_shape.py”,   第756行,在assert_is_compatible_with中引发ValueError(“Shapes%s和   %s不兼容“%(self,other))   ValueError:形状(1,)和(?,1)不兼容

1 个答案:

答案 0 :(得分:0)

是a和b单个元素还是多个元素?

enqueue_many等同于批量排队的enqueue调用。所以,如果你有a.shape = [5,1],则调用enqueue_many(a)相当于调用enqueue(a [0]),enqueue(a [1]),...,enqueue(a [-1])

如果这是预期的行为,您应该将队列的形状更改为: q_ab = tf.PaddingFIFOQueue(32,[' float32',' float32'],shapes = [[1],[1]])

如果a和b代表单个样本,则应使用enqueue而不是enqueue_many。