2017-04-04 2 views
0

Depuis que je suis nouveau à tensorflow, je ne sais pas comment définir les formes de tf.PaddingFIFOQueue pour définir l'élément comme un tableau N * 1. Je pensais que le code suivant devrait fonctionner, mais il a produit des erreurs ...Est-ce que quelqu'un peut m'aider à déboguer l'erreur tf.PaddingFIFOQueue?

Pourriez-vous s'il vous plaît me donner un indice pour déboguer cela?

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) 

File "C:\Users\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\ops\data_flow_ops.py", line 375, in enqueue_many val.get_shape()[1:].assert_is_compatible_with(shape)
File "C:\Users\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\framework\tensor_shape.py", line 756, in assert_is_compatible_with raise ValueError("Shapes %s and %s are incompatible" % (self, other)) ValueError: Shapes (1,) and (?,1) are incompatible

Répondre

0

sont-a et b des éléments individuels ou plusieurs éléments?

enqueue_many est équivalent aux appels mis en file d'attente. donc si vous avez un.shape = [5, 1] ​​appel enqueue_many (a) est équivalent à appeler enqueue (a [0]), enqueue (a [1]), ..., enqueue (a [-1]) . Si tel est le comportement prévu, vous devez changer la forme de votre file d'attente pour: q_ab = tf.PaddingFIFOQueue (32, ['float32', 'float32'], shapes = [[1], [1]]

Si a et b représentent un seul échantillon que vous devriez utiliser enqueue au lieu de enqueue_many.

+0

merci pour votre réponse! Très utile pour moi! Je viens de corriger le problème en utilisant enqueue au lieu de enqueue_many. – drw