4

我一直在调整以下 tensorflow 教程中最卷积的网络: https ://www.tensorflow.org/tutorials/layers

除了输入的形状外,我使用相同的代码。当我训练和评估时,我得到了很好的结果。但我想看到一个预测,以便我可以知道什么是错误分类的。但是在运行时

y=SN_classifier.predict(input_fn=my_data_to_predict)

其中 my_data_to_predict 是正确形状的 numpy 数组,我得到以下输出:

<generator object Estimator.predict at 0x7fb1ecefeaf0>

我在论坛上读到我应该能够阅读我的做法:for i in y: print(i)

但它引发'numpy.ndarray'对象不可调用

如果我尝试也会发生同样的情况:

print('Predictions: {}'.format(list(y))

我在其他论坛上读到的..

你知道为什么它不输出我的预测吗?

这是我定义 predict 的代码部分:

predictions = {
      # Generate predictions (for PREDICT and EVAL mode)
      "classes": tf.argmax(input=logits, axis=1),
      # Add `softmax_tensor` to the graph. It is used for PREDICT and by the
      # `logging_hook`.
      "probabilities": tf.nn.softmax(logits, name="softmax_tensor")
    }
    if mode == tf.estimator.ModeKeys.PREDICT:
        return(tf.estimator.EstimatorSpec(mode=mode, predictions=predictions))

我称之为:

y=SN_classifier.predict(input_fn=my_data_to_predict)

非常感谢您的帮助,我会接受任何建议,想法:)

4

3 回答 3

3

input_fn应该是一个生成张量的函数。将它包装在 a 中numpy_input_fn应该是您所需要的。

input_fn = tf.estimator.inputs.numpy_input_fn(my_data_to_predict)
for single_prediction in SN_classifier.predict(input_fn):
    predicted_class = single_prediction['class']
    probability = single_prediction['probability']
    do_something_with(predicted_class, probability)
于 2017-08-28T06:33:35.743 回答
2

predict 函数返回一个生成器,因此您可以一次获取包含所有预测的整个字典。

predictor = SN_classifier.predict(input_fn=my_data_to_predict)

# this is how to get your results:

predictions_dict = next(predictor)
于 2018-07-23T11:30:37.627 回答
0

有一种方法可以转换由classifier.predict函数返回的生成器,只需将生成器包装在“列表”中:

predictor = SN_classifier.predict(input_fn=my_data_to_predict);
results   = list(predictor);
tf.logging.info(results);
于 2019-04-11T11:09:24.200 回答