从实验框架对保存的TensorFlow模型的预测

从实验框架对保存的TensorFlow模型的预测,tensorflow,Tensorflow,我已经通过实验框架成功地训练和验证了我的TensorFlow模型。我现在对如何从保存的模型中预测新样本有点迷茫。我的实验代码与前一个单元格中定义的特征列类似: def experiment_fn(output_dir): return tflearn.Experiment( tflearn.DNNClassifier(feature_columns=feature_cols, hidden_units=[30,

我已经通过实验框架成功地训练和验证了我的TensorFlow模型。我现在对如何从保存的模型中预测新样本有点迷茫。我的实验代码与前一个单元格中定义的特征列类似:

def experiment_fn(output_dir):
    return tflearn.Experiment(
        tflearn.DNNClassifier(feature_columns=feature_cols,
                              hidden_units=[30, 2],
                              n_classes=2,
                              model_dir=output_dir),
        train_input_fn=get_train(),
        eval_input_fn=get_valid(),
        eval_metrics = {
    "accuracy":
        tf.contrib.learn.MetricSpec(
            metric_fn=tf.contrib.metrics.streaming_accuracy,
            prediction_key=tf.contrib.learn.PredictionKey.CLASSES),
    "precision":
        tf.contrib.learn.MetricSpec(
            metric_fn=tf.contrib.metrics.streaming_precision,
            prediction_key=tf.contrib.learn.PredictionKey.CLASSES),
    "recall":
        tf.contrib.learn.MetricSpec(
            metric_fn=tf.contrib.metrics.streaming_recall,
            prediction_key=tf.contrib.learn.PredictionKey.CLASSES)
}
    )

learn_runner.run(experiment_fn, 'model_trained')
在保存和恢复模型时,我认为我可以在DNNClassifier上检索预测方法,如下所示:

op_to_restore = graph.get_tensor_by_name("predict:0")
然后使用新样本构建提要并运行:

print sess.run(op_to_restore,feed_dict)
然而,在成功恢复模型后,TensorFlow抱怨无法找到“预测”操作


这里的任何帮助都将不胜感激。谢谢

如果您在
learn\u runner
中设置了
schedule='train'
,它将返回一个估计器。对于
schedule='train\u和\u evaluate
它需要一个,或者您可以通过传递与实验相同的模型目录,从最后一个检查点重新构造估计器。谢谢!使用schedule='train'很好。我可以根据我的测试数据进行预测。但是,您对将预测映射回我原始数据中的“关键”列有什么建议吗?在本例中,它表示原始结果的行号。这只是使用估计器的
predict()
?我要避免在
输入\u fn
中乱序,那么预测应该与输入的顺序相同。谢谢。是的,看起来这是可行的。我可能有一个解决这个问题的方法,我在最近写的一篇博文的末尾记录了这个方法:如果你在
learn\u runner
中设置
schedule='train'
,它将返回一个估计器。对于
schedule='train\u和\u evaluate
它需要一个,或者您可以通过传递与实验相同的模型目录,从最后一个检查点重新构造估计器。谢谢!使用schedule='train'很好。我可以根据我的测试数据进行预测。但是,您对将预测映射回我原始数据中的“关键”列有什么建议吗?在本例中,它表示原始结果的行号。这只是使用估计器的
predict()
?我要避免在
输入\u fn
中乱序,那么预测应该与输入的顺序相同。谢谢。是的,看起来这是可行的。我可能有一个解决这个问题的方法,我在最近写的一篇博文的末尾记录了这个方法: