首页 > 解决方案 > Keras:如何获得top-k准确率

问题描述

我想在 keras 中获得我的模型的 top-k 精度。

我在这里找到了一个帖子:如何计算 keras 中的 top5 准确度?建议如下:

from keras import backend as K
import tensorflow as tf

top_values, top_indices = K.get_session().run(tf.nn.top_k(_pred_test, k=5))

输出只给了我两个数组:

顶级值:

array([[1., 0., 0., 0., 0.],
       [1., 0., 0., 0., 0.],
       [1., 0., 0., 0., 0.],
       ...,
       [1., 0., 0., 0., 0.],
       [1., 0., 0., 0., 0.],
       [1., 0., 0., 0., 0.]], dtype=float32)

顶级指数:

array([[12,  0,  1,  2,  3],
       [13,  0,  1,  2,  3],
       [15,  0,  1,  2,  3],
       ...,
       [12,  0,  1,  2,  3],
       [17,  0,  1,  2,  3],
       [18,  0,  1,  2,  3]])

我将如何根据这些值计算实际分数?

标签: pythonkeras

解决方案


好的,这是对我有用的代码,以防其他人偶然发现类似问题 - 我缺少的链接是使用“.evaluate”:

import functools
top3_acc = functools.partial(keras.metrics.top_k_categorical_accuracy, k=3)

top3_acc.__name__ = 'top3_acc'

model.compile(Adam(lr=.001),#
    optimizers.RMSprop(lr=2e-5),
        loss='categorical_crossentropy',
        metrics=['accuracy','top_k_categorical_accuracy',top3_acc])

    model.evaluate(X_test, y_test)

其中 'top_k_categorical_accuracy' 给了我 k=5(标准)的分数,top3_acc 可以通过在函数调用中更改 k=3 来调整。


推荐阅读