我正在尝试按照link
中所述的tensor flow
教程进行操作
我正在尝试按照描述打印预测结果:
print ("Predicted %d, Label: %d" % (classifier.predict(test_data[0]), test_labels[0]))
但我无法打印结果。我收到以下错误。
print ("Predicted %d, Label: %d" % (classifier.predict(test_data[0]), test_labels[0]))
TypeError: %d format: a number is required, not generator
如何在generator
中打印python
。
我尝试编写循环并迭代它没有工作的元素,我尝试使用next
来打印生成器。这也没有用。我该如何打印?
答案 0 :(得分:6)
这就是我解决它的方式
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]))
答案 1 :(得分: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
换句话说,你有明确地使用生成器正在生成的东西。
答案 2 :(得分:0)
运行推理以确定类概率预测。 (弃用的参数)
有些论点已被弃用。他们将在2016-09-15之后被删除。 更新说明:predict()的默认行为是 改变。 as_iterable的默认值将更改为True,和 然后该旗帜将被完全删除。这个标志的行为是 如下所述。
尝试:
classifier.predict(x=test_data[0])