python - 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]])
我将如何根据这些值计算实际分数?
解决方案
好的,这是对我有用的代码,以防其他人偶然发现类似问题 - 我缺少的链接是使用“.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 来调整。
推荐阅读
- python - 打印到 7" 屏幕,然后使用 textwrapper + 控制台登录清除监视器
- log4net - Log4net - 显示完整的异常信息,包括内部异常
- vim - 从终端仿真器调用 Vimscript 函数
- python - 嵌套的字符串列表,按空格分隔
- c++ - 库中的 C++ 自注册工厂:应用程序中未注册类型
- zsh - zsh 解析错误:“(eval):1:`)'附近的解析错误”
- log4j - Log4j - 显示完整的异常信息,包括内部异常
- machine-learning - 如何将一个节点的输出作为输入参数传递给 Argo 工作流 DAG 中的另一个节点
- javascript - 将大量 Javascript 对象过滤到二维数组中的最有效方法是什么?
- node.js - Heroku 上的 Youtube-dl 有时空下载\在重新启动测功机时可以正常工作吗?