我正在使用MNIST教程中的代码:
feature_columns = [tf.contrib.layers.real_valued_column("", dimension=4)]
classifier = tf.contrib.learn.DNNClassifier(feature_columns=feature_columns,
hidden_units=[10, 20, 10],
n_classes=2,
model_dir="/tmp/iris_model")
classifier.fit(x=np.array(train, dtype = 'float32'),
y=np.array(y_tr, dtype = 'int64'),
steps=2000)
accuracy_score = classifier.evaluate(x=np.array(test, dtype = 'float32'),
y=y_test)["auc"]
print('AUC: {0:f}'.format(accuracy_score))
from tensorflow.contrib.learn import SKCompat
ds_test_ar = np.array(ds_test, dtype = 'float32')
ds_predict_tf = classifier.predict(input_fn = _my_predict_data)
print('Predictions: {}'.format(str(ds_predict_tf)))
但最后我得到了以下结果而不是预测:
Predictions: <generator object DNNClassifier.predict.<locals>.<genexpr> at 0x000002CE41101CA8>
我做错了什么?
答案 0 :(得分:13)
您收到并保存到ds_predict_tf
的内容是生成器表达式。
要打印它,你可以这样做:
for i in ds_predict_tf:
print i
或
print(list(ds_predict_tf))
您可以阅读有关genexpr here的更多信息。
答案 1 :(得分:9)
DNNC分类器预测功能默认为 as_iterable = True 。因此,它返回一个生成器。要获取预测值而不是生成器,请在classifier.predict方法中传递 as_iterable = False 。
例如,
classifier.predict(input_fn = _my_predict_data,as_iterable=False)
了解有关分类器方法和参数的更多信息。以下是预测方法的文档的一部分。
来自DNNClassifier文档:
参数数量:
返回:
答案 2 :(得分:1)
<强>解决方案: - 强>
pred = classifier.fit(x=training_set.data, y=training_set.target, steps=2000).predict(test_set.data)
print ("Predictions:")
print(list(pred))
那是......
答案 3 :(得分:1)
尽可能接近教程使用:
print('Predictions: {}' .format(list(ds_predict_tf)))
答案 4 :(得分:0)
很抱歉,答案非常简单,您需要使用predictor
作为generator
对象:
g1 = ds_predict_tf
[g1.__next__() for i in range(100)]