如何在 Keras 中创建一个 return 多维值的指标?

How to create a metric in Keras that return a multi-dimensional value?

我正在使用 keras 解决一个多 class 问题。我的数据非常不平衡,所以我试图创建类似于混淆矩阵的东西。我的数据集非常大,并保存为 HDF5,因此我使用 HDF5Matrix 获取 X 和 Y,使 scikit-learn 混淆矩阵变得无关紧要(据我所知)。 我已经看到 , or output the error per label 是可能的,但是更优雅的解决方案是创建一个多维指标来累积(预测的,真实的)标签对(有点像混淆矩阵)。 我使用以下回调来尝试查看每个批次/时期的情况:

from keras.callbacks import LambdaCallback
batch_print_callback = LambdaCallback(on_batch_end=lambda batch, logs: 
print(logs),on_epoch_end=lambda epoch, logs: print(logs))

但它只累积一个值(通常是排序的平均值)。

我也试过看看是否可以 return y_pred / y_true 如下(尝试看看我是否可以打印多维值日志):

def pred(y_true, y_pred):
     return y_pred

def true(y_true, y_pred):
    return y_true

然而,它并不是我预期的 return 多维值 所以基本上,我的问题是,我可以使用 keras 来累积多维指标吗?

嗯,据我所知,这是不可能的,因为在返回张量值之前,应用了 K.mean。我在 keras github 上发布了一个关于这个的 issue。 我想出的最好的设计是混淆矩阵中每个单元格的度量,以及收集它们的回调,灵感来自问题中提到的线程。 可以找到一种可行的解决方案 here