Skip to content

Commit 057eb8f

Browse files
committed
fix paddle.metric.Accuracy
1 parent 6923ca3 commit 057eb8f

File tree

1 file changed

+90
-16
lines changed

1 file changed

+90
-16
lines changed
Lines changed: 90 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,104 @@
1-
.. _cn_api_paddle_metric_accuracy:
1+
.. _cn_api_metric_Accuracy:
22

3-
accuracy
3+
Accuracy
44
-------------------------------
55

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)
77
8-
accuracy layer。参考 https://en.wikipedia.org/wiki/Precision_and_recall
98
10-
使用输入和标签计算准确率。如果正确的标签在 topk 个预测值里,则计算结果加 1。注意:输出正确率的类型由 input 类型决定,input 和 lable 的类型可以不一样
9+
计算准确率(accuracy)
1110

12-
参数
11+
参数
1312
:::::::::
13+
- **topk** (list[int]|tuple[int]) - 计算准确率的 top 个数,默认是(1,)。
14+
- **name** (str, optional) - metric 实例的名字。默认值为 None,表示使用默认名字 'acc'。
1415

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)
2149
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)
2362
:::::::::
2463
25-
``Tensor``,计算出来的正确率,数据类型为 float32 的 Tensor
64+
计算 top-k(topk 中的最大值)的索引
2665

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)
2875
:::::::::
2976
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

Comments
 (0)