2017-01-12 3 views
3

Ich versuche, die tensor flow Tutorial zu folgen, wie in diesem linkDrucken ein Generator in Python Tensor fließen

beschrieb ich das vorhergesagte Ergebnis zu drucken versuche wie beschrieben:

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

Aber ich bin nicht in der Lage um das Ergebnis zu drucken. Ich erhalte den folgenden Fehler.

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

Wie drucke ich die generator in python.

Ich habe versucht, eine Schleife zu schreiben und über die Elemente zu iterieren, die es nicht funktioniert hat, und ich habe versucht, next zu verwenden, um den Generator zu drucken. Das hat auch nicht funktioniert. Wie drucke ich es?

Antwort

5

ist, wie ich es

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])) 
+0

Das hat auch für mich funktioniert. Danke fürs Teilen –

+0

@jgm Arbeitete auch für mich. – mjm

0

Vom documentation:

Runs inference to determine the class probability predictions. (deprecated arguments)

SOME ARGUMENTS ARE DEPRECATED. They will be removed after 2016-09-15. Instructions for updating: The default behavior of predict() is changing. The default value for as_iterable will change to True, and then the flag will be removed altogether. The behavior of this flag is described below.

Versuchen:

classifier.predict(x=test_data[0]) 
+0

gelöst @Maximillan Ich habe versucht, wie Sie 'print ("Predicted% d, Label:% d", sagte% (classifier.predict (x = test_data [0]), test_labels [0])) ', aber trotzdem bekomme ich den gleichen Fehler. 'print (" Vorhergesagt% d, Label:% d "% (classifier.predict (x = test_data [0]), test_labels [0])) TypeError:% d Format: eine Zahl wird benötigt, nicht Generator' – jgm

+0

Can Sie versuchen, ohne% d und sehen, was es druckt? –

+0

Wenn ich es wie folgt versuchen print classifier.predict (x = test_data [0]) 'Ich bekomme den folgenden Fehler' ' – jgm

1

Kein tensorflow hier, also lassen Sie uns einen Generator Mock-up und testen Sie es gegen Ihre print Ausdruck

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) 
<ipython-input-12-29ec761936ef> in <module>() 
----> 1 print('a:%d, b:%d'%(predict(0, 0))) 

TypeError: %d format: a number is required, not generator 

Bisher , so gut: Ich habe das gleiche Problem wie du habe erlebt.

Das Problem ist natürlich, dass das, was Sie bekommen, wenn Sie einen Generator-Funktion aufrufen, sind keine Werte, sondern einen Generator Objekt ...

Sie haben auf den Generator Objekte iterieren, mit was auch immer von jedem zurückgegeben Iteration, zB

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 

oder, wenn Sie,

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 

Mit anderen Worten nicht Einzeiler mögen, haben Sie explizit cons Ume was der Generator produziert. Diese

+0

Ich habe beide Methoden ausprobiert. Aber jetzt bekomme ich einen weiteren Fehler. 'für i, j in vorherzusagen, (0, 0): # Fehler hier print ('a:% d, b:% d' % (i, j))' 'Typeerror: 'Generator' -Objekt ist nicht aufrufbar – jgm

+0

Ich habe meine Beispiele mit Python 3.5.2 und Python 2.7.13 getestet und das Verhalten ist genau das, was ich in meiner Antwort berichtet habe - "Predicte" ist ein aufrufbares Objekt, das ** ein Generator-Objekt zurückliefert und in meinem Code habe ich nie versucht, das zurückgegebene Generatorobjekt aufzurufen. – gboffi