首页 > 解决方案 > Keras 问题与 3d 张量的前 k 个分类精度

问题描述

我在使用 keras 中的前 k 个分类准确度指标时遇到问题。我正在对基因组数据进行培训,大约有 10,000 个人,每个人都有 4,000 个核苷酸,可以是四个碱基之一,因此它们是一个热编码的。输出类似,但不是四个基,而是三个类别。

输入形状 (10000, 4000, 4) 输出形状 (10000, 4000, 3)

我尝试使用前 k 个分类精度,但我得到: ValueError: Shape must be rank 2 but is rank 3 for 'metrics/top_k_categorical_accuracy/in_top_k/InTopKV2' (op: 'InTopKV2') with input shapes: [?,?, 3],[?,?],[]。

显然 keras 不喜欢 3d 张量。我该如何解决这个问题?

标签: pythontensorflowmachine-learningkeras

解决方案


可能会帮助你。

简而言之,top k 分类精度没有被定义为尺寸灵活。

您需要转换数据以适应。

import keras.backend as K 
def my_top_k(true, pred, num):
    true = K.reshape(true, (-1, features_num))   
    pred = K.reshape(pred, (-1, features_num))
    return top_k_categorical_accuracy(true, pred, k=num)

推荐阅读