我正在尝试初始化类似于我的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的构造函数的参数为​​(强调我的):


  
  dtypesDType对象的列表。 dtypes的长度必须等于每个队列元素中的张量的数量。
  shapes:(可选。)完整定义的TensorShape对象的列表,其长度与dtypesNone相同。
  


但是,您指定为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/

10-09 03:13