tensorflow 里metrics_深入理解TensorFlow中的tf.metrics算子

本文深入解析TensorFlow内置的评估指标,如accuracy、precision、recall和mean_iou。通过实例解释了如何使用tf.metrics,特别是tf.metrics.accuracy,并通过Numpy创建自定义评估指标以理解其工作原理。文章还讨论了在使用tf.metrics时常见的错误和注意事项。
摘要由CSDN通过智能技术生成

前言

本文将深入介绍Tensorflow内置的评估指标算子。

tf.metrics.accuracy()

tf.metrics.precision()

tf.metrics.recall()

tf.metrics.mean_iou()

简单起见,本文在示例中使用tf.metrics.accuracy(),但它的模式以及它背后的原理将适用于所有评估指标。如果您只想看到有关如何使用tf.metrics的示例代码,请跳转到5.1和5.2节,如果您想要了解为何使用这种方式,请继续阅读。

这篇文章将通过一个非常简单的代码示例来理解tf.metrics的原理,这里使用Numpy创建自己的评估指标。这将有助于对Tensorflow中的评估指标如何工作有一个很好的直觉认识。然后,我们将给出如何采用tf.metrics快速实现同样的功能。但首先,我先讲述一下写下这篇博客的由来。

背景

这篇文章的由来是来自于我尝试使用tf.metrics.mean_iou评估指标进行图像分割,但却获得完全奇怪和不正确的结果。我花了一天半的时间来弄清楚我哪里出错了。你会发现,自己可能会非常容易错误地使用tf的评估指标。截至2017年9月11日,tensorflow文档并没有非常清楚地介绍如何正确使用Tensorflow的评估指标。

因此,这篇文章旨在帮助其他人避免同样的错误,并且深入理解其背后的原理,以便了解如何正确地使用它们。

生成数据

在我们开始使用任何评估指标之前,让我们先从简单的数据开始。我们将使用以下Numpy数组作为我们预测的标签和真实标签。数组的每一行视为一个batch,因此这个例子中共有4个batch。

import numpy as np

labels = np.array([[1,1,1,0],

[1,1,1,0],

[1,1,1,0],

[1,1,1,0]], dtype=np.uint8)

predictions = np.array([[1,0,0,0],

[1,1,0,0],

[1,1,1,0],

[0,1,1,1]], dtype=np.uint8)

n_batches = len(labels)

建立评价指标

为了简单起见,这里采用的评估指标是准确度(accuracy):

如果我们想计算整个数据集上的accuracy,可以这样计算:

n_items = labels.size

accuracy = (labels == predictions).sum() / n_items

print("Accuracy :", accuracy)

[OUTPUT]

Accuracy : 0.6875

这种方法的问题在于它不能扩展到大型数据集,这些数据集太大而无法一次性加载到内存。为了使其可扩展,我们希望使评估指标能够逐步更新,每次更新一个batch中预测值和标签。为此,我们需要跟踪两个值:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值