Keras 自定义指标 - MAP 和 MRR

数据挖掘 喀拉斯 张量流 公制 有限精度
2022-02-17 22:58:46

我正在尝试在 keras 中构建一个 LSTM 模型,其中我有一个问题有 10 个答案,但其中只有一个是正确的。所以基本上我想建立一个 10 类分类问题。由于大多数研究论文都使用平均平均精度(MAP)和平均倒数排名(MRR)来评估此类问题,我想将它们用作自定义指标。

所以我的第一个问题:下面的代码计算平均精度是否正确?

def MAP(ground_label, predict_label):
mAp = 0
map_idx = 0
extracted = {}

for idx_, glab in enumerate(ground_label):
    if ground_label[idx_] != 0:
        extracted[idx_] = 1

key = np.argsort(predict_label)[::-1]
for i, idx_ in enumerate(key):
    if tuple(idx_.tolist()) in extracted:
        map_idx += 1
        mAp += map_idx / (i + 1)

assert (map_idx != 0)
mAp = mAp / map_idx
return mAp

第二个问题是我如何修改这段代码以将其用作自定义度量函数,因为 keras 自定义度量假设输入是函数的张量。

0个回答
没有发现任何回复~