|
1 | | -.. _cn_api_paddle_metric_accuracy: |
| 1 | +.. _cn_api_metric_Accuracy: |
2 | 2 |
|
3 | | -accuracy |
| 3 | +Accuracy |
4 | 4 | ------------------------------- |
5 | 5 |
|
6 | | -.. py:function:: paddle.metric.accuracy(input, label, k=1, correct=None, total=None, name=None) |
| 6 | +.. py:class:: paddle.metric.Accuracy(topk=(1, ), name=None, *args, **kwargs) |
7 | 7 |
|
8 | | -accuracy layer。参考 https://en.wikipedia.org/wiki/Precision_and_recall |
9 | 8 |
|
10 | | -使用输入和标签计算准确率。如果正确的标签在 topk 个预测值里,则计算结果加 1。注意:输出正确率的类型由 input 类型决定,input 和 lable 的类型可以不一样。 |
| 9 | +计算准确率(accuracy)。 |
11 | 10 |
|
12 | | -参数 |
| 11 | +参数: |
13 | 12 | ::::::::: |
| 13 | + - **topk** (list[int]|tuple[int]) - 计算准确率的 top 个数,默认是(1,)。 |
| 14 | + - **name** (str, optional) - metric 实例的名字。默认值为 None,表示使用默认名字 'acc'。 |
14 | 15 |
|
15 | | - - **input** (Tensor)-数据类型为 float32,float64。输入为网络的预测值。shape 为 ``[sample_number, class_dim]`` 。 |
16 | | - - **label** (Tensor)-数据类型为 int64。输入为数据集的标签。shape 为 ``[sample_number, 1]`` 。 |
17 | | - - **k** (int64|int32,可选) - 取每个类别中 k 个预测值用于计算,默认值为 1。 |
18 | | - - **correct** (int64|int32, 可选)-正确预测值的个数,默认值为 None。 |
19 | | - - **total** (int64|int32,可选)-总共的预测值,默认值为 None。 |
20 | | - - **name** (str,可选) - 具体用法请参见 :ref:`api_guide_Name`,一般无需设置,默认值为 None。 |
| 16 | +代码示例 |
| 17 | +::::::::: |
| 18 | + |
| 19 | +**独立使用示例:** |
| 20 | + |
| 21 | + .. code-block:: python |
| 22 | + import numpy as np |
| 23 | + import paddle |
| 24 | + x = paddle.to_tensor(np.array([ |
| 25 | + [0.1, 0.2, 0.3, 0.4], |
| 26 | + [0.1, 0.4, 0.3, 0.2], |
| 27 | + [0.1, 0.2, 0.4, 0.3], |
| 28 | + [0.1, 0.2, 0.3, 0.4]])) |
| 29 | + y = paddle.to_tensor(np.array([[0], [1], [2], [3]])) |
| 30 | + m = paddle.metric.Accuracy() |
| 31 | + correct = m.compute(x, y) |
| 32 | + m.update(correct) |
| 33 | + res = m.accumulate() |
| 34 | + print(res) # 0.75 |
| 35 | +
|
| 36 | +
|
| 37 | +**在 Model API 中的示例** |
| 38 | + |
| 39 | + .. code-block:: python |
| 40 | + import paddle |
| 41 | + from paddle.static import InputSpec |
| 42 | + import paddle.vision.transforms as T |
| 43 | + from paddle.vision.datasets import MNIST |
| 44 | +
|
| 45 | + input = InputSpec([None, 1, 28, 28], 'float32', 'image') |
| 46 | + label = InputSpec([None, 1], 'int64', 'label') |
| 47 | + transform = T.Compose([T.Transpose(), T.Normalize([127.5], [127.5])]) |
| 48 | + train_dataset = MNIST(mode='train', transform=transform) |
21 | 49 |
|
22 | | -返回 |
| 50 | + model = paddle.Model(paddle.vision.models.LeNet(), input, label) |
| 51 | + optim = paddle.optimizer.Adam( |
| 52 | + learning_rate=0.001, parameters=model.parameters()) |
| 53 | + model.prepare( |
| 54 | + optim, |
| 55 | + loss=paddle.nn.CrossEntropyLoss(), |
| 56 | + metrics=paddle.metric.Accuracy()) |
| 57 | +
|
| 58 | + model.fit(train_dataset, batch_size=64) |
| 59 | +
|
| 60 | +
|
| 61 | +compute(pred, label, *args) |
23 | 62 | ::::::::: |
24 | 63 |
|
25 | | - ``Tensor``,计算出来的正确率,数据类型为 float32 的 Tensor。 |
| 64 | +计算 top-k(topk 中的最大值)的索引。 |
26 | 65 |
|
27 | | -代码示例 |
| 66 | +**参数** |
| 67 | + |
| 68 | + - **pred** (Tensor) - 预测结果为是 float64 或 float32 类型的 Tensor。shape 为[batch_size, d0, ..., dN]. |
| 69 | + - **label** (Tensor) - 真实的标签值是一个 int64 类型的 Tensor,shape 为[batch_size, d0, ..., 1] 或 one hot 表示的形状[batch_size, d0, ..., num_classes]. |
| 70 | + |
| 71 | +**返回**: Tensor,shape 是[batch_size, d0, ..., topk], 值为 0 或 1,1 表示预测正确. |
| 72 | + |
| 73 | + |
| 74 | +update(pred, label, *args) |
28 | 75 | ::::::::: |
29 | 76 |
|
30 | | -COPY-FROM: paddle.metric.accuracy |
| 77 | +更新 metric 的状态(正确预测的个数和总个数),以便计算累积的准确率。返回当前 step 的准确率。 |
| 78 | + |
| 79 | +**参数:** |
| 80 | + |
| 81 | + - **correct** (numpy.array | Tensor): 一个值为 0 或 1 的 Tensor,shape 是[batch_size, d0, ..., topk]。 |
| 82 | + |
| 83 | +**返回:** 当前 step 的准确率。 |
| 84 | + |
| 85 | + |
| 86 | +reset() |
| 87 | +::::::::: |
| 88 | + |
| 89 | +清空状态和计算结果。 |
| 90 | + |
| 91 | +accumulate() |
| 92 | +::::::::: |
| 93 | + |
| 94 | +累积的统计指标,计算和返回准确率。 |
| 95 | + |
| 96 | +**返回:** 准确率,一般是个标量 或 多个标量,和 topk 的个数一致。 |
| 97 | + |
| 98 | + |
| 99 | +name() |
| 100 | +::::::::: |
| 101 | + |
| 102 | +返回 Metric 实例的名字, 参考上述 name,默认是'acc'。 |
| 103 | + |
| 104 | +**返回:** 评估的名字,string 类型。 |
0 commit comments