2017-01-12 2 views
3

に、私はこのlinkのpythonテンソルの流れ

で説明したようにtensor flowチュートリアルに従うことをしようとしている発電機の印刷私が説明するように、予測結果を印刷しようとしています:

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

しかし、私はできませんよ結果を印刷する。次のエラーが表示されます。私はpythongeneratorを印刷するにはどうすればよい

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

ループを作成して、それが機能しなかった要素を反復しようとしましたが、nextを使用してジェネレータを印刷しようとしました。それもうまくいきませんでした。どのように印刷しますか? documentationから

答えて

5

これは私がそれをあなたが `プリント( "予測%dの、レーベル:%D" 言われて、私が試した@Maximillan

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

これも私のために働いた。共にありがとう –

+0

@jgm私のために働いた。 – mjm

0

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.

試してみてください。ここ

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

解決方法です(%(classifier.predictをX = TEST_DATA [0])、 test_labels [0])) 'でも、同じエラーが出ます。 TypeError:%d形式:数値は必須です(ジェネレータではありません)。 – jgm

+0

Can(可):%d、ラベル:%d "%あなたは%dなしで試してみて、何が印刷されるのか見てみましょうか? –

+0

この 'print classifier.predict(x = test_data [0])'のようにしようとすると、次のエラーが発生します。 ' jgm

1

tensorflow、それでは、発電機をモックアップし、これまでのところ、あなたの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) 
<ipython-input-12-29ec761936ef> in <module>() 
----> 1 print('a:%d, b:%d'%(predict(0, 0))) 

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

に対してそれをテストしてみましょう、とても良い:私はあなたと同じ問題を抱えています経験した。

問題は、あなたがそれぞれから返されるものは何でも利用し、発電機のオブジェクトに反復処理する必要が

...あなたはジェネレータ関数を呼び出すときの値が、ジェネレータオブジェクトはありませんあなたが何を得ることを、当然のことながら、あります反復、例えば、言い換えれば

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 

か、あなたはワンライナーを好きではない場合、

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 

、あなたはに明示的短所を持っていますumeジェネレータが生成しているもの。

+0

私は両方のメソッドを試しました。しかし、今私は別のエラーが発生します。 'のi、jの予測(0、0):#ここでのエラー print( 'a:%d、b:%d'%(i、j)) ' ' TypeError:' generator 'オブジェクトは呼び出し可能ではない ' – jgm

+0

私はpython 3.5.2とpython 2.7.13で私のサンプルをテストしました。振る舞いは私の答えで報告したものです - ' predict'は** generatorオブジェクトを返す呼び出し可能なオブジェクトです私のコードでは、返されたジェネレータオブジェクトを呼び出すことは一度もありませんでした。 – gboffi

関連する問題