我试图初始化一个类似于我的numpy数组形状的FIFOQueue 但得到以下错误。
My - numpy array shape - (1,17428,3)
dtypes=[tf.float32,tf.float32,tf.float32]
print len(dtypes)
shapes=[1, 17428, 3]
print len(shapes)
q = tf.FIFOQueue(capacity=200,dtypes=dtypes,shapes=shapes)
ValueError: Queue shapes must have the same length as dtypes
答案 0 :(得分:3)
documentation指定FIFOQueue
的构造函数的参数是(强调我的):
dtypes
:DType
个对象的列表。dtypes
的长度必须等于每个队列元素中的张量数。shapes
:(可选。)完全定义的TensorShape
个对象列表,其长度与dtypes
或None
相同。
您指定为shapes
的内容不是完全定义的TensorShape
对象的列表。它是一个三维的列表,将被解释为一个TensorShape
,导致shapes=[TensorShape([Dimension(1), Dimension(17428), Dimension(3)])]
长度为1.要告诉构造函数您想要三个1D张量,您可以指定:
shapes=[tf.TensorShape(1), tf.TensorShape(17428), tf.TensorShape(3)]
然后q = tf.FIFOQueue(capacity=200,dtypes=dtypes,shapes=shapes)
将运行,不会引发任何错误。