Impresión de un generador en flujo tensor python.

Estoy tratando de seguir el tutorial de tensor flow como se describe en este enlace

Estoy tratando de imprimir el resultado predicho como se describe:

 print ("Predicted %d, Label: %d" % (classifier.predict(test_data[0]), test_labels[0])) 

Pero no puedo imprimir el resultado. Estoy teniendo el siguiente error.

  print ("Predicted %d, Label: %d" % (classifier.predict(test_data[0]), test_labels[0])) TypeError: %d format: a number is required, not generator 

¿Cómo imprimo el generator en python .

Intenté escribir un bucle e iterar sobre los elementos que no funcionaban y traté de usar el next para imprimir el generador. Eso tampoco funcionó. ¿Cómo lo imprimo?

Así lo resolví.

 new_samples = np.array([test_data[8]], dtype=float) y = list(classifier.predict(new_samples, as_iterable=True)) print('Predictions: {}'.format(str(y))) print ("Predicted %s, Label: %d" % (str(y), test_labels[8])) 

No hay tensorflow aquí, así que vamos a tensorflow un generador y probarlo contra su expresión de print

 In [11]: def predict(a, b): ...: for i in range(10): ...: yield i, i*i ...: In [12]: print('a:%d, b:%d'%(predict(0, 0))) --------------------------------------------------------------------------- TypeError Traceback (most recent call last)  in () ----> 1 print('a:%d, b:%d'%(predict(0, 0))) TypeError: %d format: a number is required, not generator 

Hasta ahora, todo bien: tengo el mismo problema que has experimentado.

El problema es, por supuesto, que lo que se obtiene cuando llama a una función de generador no son valores sino un objeto generador …

Debe iterar en los objetos del generador, utilizando lo que se devuelve de cada iteración, por ejemplo,

 In [13]: print('\n'.join('a:%d, b:%d'%(i,j) for i, j in predict(0,0))) a:0, b:0 a:1, b:1 a:2, b:4 a:3, b:9 a:4, b:16 a:5, b:25 a:6, b:36 a:7, b:49 a:8, b:64 a:9, b:81 

o, si no te gustan las frases simples,

 In [14]: for i, j in predict(0, 0): ...: print('a:%d, b:%d'%(i,j)) ...: a:0, b:0 a:1, b:1 a:2, b:4 a:3, b:9 a:4, b:16 a:5, b:25 a:6, b:36 a:7, b:49 a:8, b:64 a:9, b:81 

En otras palabras, debe consumir explícitamente lo que está generando el generador.

De la documentación :

Ejecuta inferencia para determinar las predicciones de probabilidad de clase. (Argumentos en desuso)

ALGUNOS ARGUMENTOS SON DEPRECADOS. Serán retirados después del 2016-09-15. Instrucciones para la actualización: el comportamiento predeterminado de predict () está cambiando. El valor predeterminado para as_iterable cambiará a Verdadero, y luego la bandera se eliminará por completo. El comportamiento de esta bandera se describe a continuación.

Tratar:

 classifier.predict(x=test_data[0])