我正在尝试初始化类似于我的numpy数组形状的FIFOQueue
但出现以下错误。
我的-numpy数组形状-(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
最佳答案
documentation指定FIFOQueue
的构造函数的参数为(强调我的):
dtypes
:DType
对象的列表。 dtypes
的长度必须等于每个队列元素中的张量的数量。
shapes
:(可选。)完整定义的TensorShape
对象的列表,其长度与dtypes
或None
相同。
但是,您指定为shapes
的不是完整定义的TensorShape
对象的列表。它是三个维度的列表,这些维度将被解释为一个TensorShape
,导致长度为1的shapes=[TensorShape([Dimension(1), Dimension(17428), Dimension(3)])]
。要告诉构造函数您需要三个1D张量,可以指定:
shapes=[tf.TensorShape(1), tf.TensorShape(17428), tf.TensorShape(3)]
然后
q = tf.FIFOQueue(capacity=200,dtypes=dtypes,shapes=shapes)
将运行,并且不会出现任何错误。关于python - 队列形状必须与dtypes具有相同的长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47297263/