【问题标题】:Precision is always zero tensorflow metrics [closed]精度始终为零张量流指标[关闭]
【发布时间】:2018-01-02 13:33:26
【问题描述】:

我正在使用 tf 指标来计算精度和召回率,但总是得到 0.0,但是当我自己计算时,我得到了很好的精度,是 tensorflow 的错误还是我做错了什么。

with tf.name_scope("pointwise_accuracy"):
    correct_predictions = tf.equal(self.predictions, tf.argmax(self.input_y, 1))
    self.classification_accuracy = tf.reduce_mean(tf.cast(correct_predictions, "float"), name="accuracy")
    self.precision = tf.metrics.precision(self.input_y, self.logits, name="precison")[0]

输出 精度 - 0.0

【问题讨论】:

    标签: python tensorflow machine-learning evaluation


    【解决方案1】:

    tf.metrics.precision 仅用于二进制分类问题,其参数必须全部为01,因为正如文档所说,它们将被转换为bool。如果您确实在处理二进制分类问题但想使用 logits 作为参数,您可以查看tf.metrics.precision_at_thresholds,它允许您指定预测被认为是真的阈值。

    不过,由于你的手动计算使用tf.argmax,看起来更像是一个多类分类问题,这种情况下你通常不会谈论precision/recall,而只是accuracy,所以你可以看看tf.metrics.accuracy,并将tf.argmax(self.input_y, 1)self.predictions 作为参数传递。

    【讨论】:

    • 谢谢,我正在处理一个多类问题。
    猜你喜欢
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    相关资源
    最近更新 更多