paddle.static. accuracy ( input, label, k=1, correct=None, total=None ) [source]

accuracy layer. Refer to the This function computes the accuracy using the input and label. If the correct label occurs in top k predictions, then correct will increment by one.


the dtype of accuracy is determined by input. the input and label dtype can be different.

  • input (Tensor) – The input of accuracy layer, which is the predictions of network. A Tensor with type float32,float64. The shape is [sample_number, class_dim] .

  • label (Tensor) – The label of dataset. Tensor with type int32,int64. The shape is [sample_number, 1] .

  • k (int, optional) – The top k predictions for each class will be checked. Data type is int64 or int32. Default is 1.

  • correct (Tensor, optional) – The correct predictions count. A Tensor with type int64 or int32. Default is None.

  • total (Tensor, optional) – The total entries count. A tensor with type int64 or int32. Default is None.


Tensor, The correct rate. A Tensor with type float32.


>>> import numpy as np
>>> import paddle
>>> import paddle.static as static
>>> import paddle.nn.functional as F
>>> paddle.seed(2023)
>>> paddle.enable_static()
>>> data ="input", shape=[-1, 32, 32], dtype="float32")
>>> label ="label", shape=[-1,1], dtype="int")
>>> fc_out = static.nn.fc(x=data, size=10)
>>> predict = F.softmax(x=fc_out)
>>> result = static.accuracy(input=predict, label=label, k=5)
>>> place = paddle.CPUPlace()
>>> exe = static.Executor(place)
>>> np.random.seed(1107)
>>> x = np.random.rand(3, 32, 32).astype("float32")
>>> y = np.array([[1],[0],[1]])
>>> output ={"input": x,"label": y},
...                  fetch_list=[result])
>>> print(output)
[array(0.33333334, dtype=float32)]