Tensorflow tf.contrib.learn.DNNClassifer估计精度与DNNClassifier预测精度不一致

时间:2017-01-06 22:56:58

标签: tensorflow

一般而言,我们应该在估算期间获得的准确度与预测期间达到的准确度之间进行哪种对齐?简而言之,如果我们在估算期间达到85%的准确度,我们是否应该在预测期间得到类似的结果?还有一些其他帖子讨论预测准确性问题,但似乎没有人直接提出这个问题。

更具体地说,我使用DNNClassifier来学习1000行特征数据,每行有53个特征(即列)。然后对100个样品进行测试。该模型配置为针对两个标签进行分类:0和1,并实现下面的预测准确度。

INFO:tensorflow:保存步骤45300的评估摘要: 准确度:0.846154 accuracy / baseline_label_mean:0.197802 accuracy / threshold_0.500000_mean:0.846154 auc:0.743912 global_step:45300 labels / actual_label_mean:0.197802 labels / prediction_mean:0.283492 损失:0.398202 precision / positive_threshold_0.500000_mean:1.0 召回/ positive_threshold_0.500000_mean:0.222222

然而,当在预测步骤期间使用15个示例,并且其中50%应该被标记为1时,它们通常都返回为0。有时,单个示例将被正确归类为1。

例如: 预测:[0,0,0,0,0,0,0,0,0,0,0,0,0,0]

我的DNNClassifier配置如下:

m = tf.contrib.learn.DNNClassifier(model_dir=model_dir,
                                       feature_columns=deep_columns,
                                       hidden_units=[32, 16],
                                       activation_fn=tf.nn.relu,
                                       n_classes=2,
                                       optimizer=tf.train.AdagradOptimizer(
                                       learning_rate=0.1))

,预测函数调用如下:

y = m.predict(input_fn = lambda: input_fn(df_predict))
    predictions = list(itertools.islice(y, 15))
    print("Predictions: {}".format(str(predictions)))
    for i in predictions:
        print(i)

我有两个问题。 (1)我是否正确地假设估计和预测准确度之间应该存在直接关联,因此85%的估计精度应该导致类似的预测准确度?

(2)培训完成时提供的其他结果(即" labels / prediction_mean:0.283492")是否提供与实现的低水平预测准确度相关的信息?我无法在TensorFlow文档中找到这些结果标签的定义,如果我错过了某些内容,我会道歉。

非常感谢您对此的任何想法。

0 个答案:

没有答案