2017-11-14 4 views
1

Ich versuche, eine FIFOQueue zu initialisieren, die der Form meines Nummernfelds ähnelt, aber den folgenden Fehler erhalten.Warteschlangenformen müssen die gleiche Länge wie dtypes haben

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 

Antwort

1

Die documentation gibt an, dass die Parameter für FIFOQueue ‚s Konstruktor sind (Hervorhebung von mir):

  • dtypes : Eine Liste von DType Objekten. Die Länge von dtypes muss der Anzahl der Tensoren in jedem Warteschlangenelement entsprechen.
  • shapes: (Optional). Eine Liste der vollständig definierte TensorShape Objekte mit der gleichen Länge wie dtypes oder None.

Was Sie als shapes Angabe ist nicht eine Liste von vollständig definierte TensorShape Objekte, though. Es ist eine Liste von drei Dimensionen, die als eine TensorShape in shapes=[TensorShape([Dimension(1), Dimension(17428), Dimension(3)])] resultierende interpretiert wird, die der Länge ist 1. den Konstruktor zu sagen, dass Sie drei 1D Tensoren möchten, können Sie angeben:

shapes=[tf.TensorShape(1), tf.TensorShape(17428), tf.TensorShape(3)] 

Dann q = tf.FIFOQueue(capacity=200,dtypes=dtypes,shapes=shapes) laufen und keine Fehler wird ausgelöst.

Verwandte Themen