Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Keras中创建返回多维值的度量?_Python_Machine Learning_Deep Learning_Keras_Confusion Matrix - Fatal编程技术网

Python 如何在Keras中创建返回多维值的度量?

Python 如何在Keras中创建返回多维值的度量?,python,machine-learning,deep-learning,keras,confusion-matrix,Python,Machine Learning,Deep Learning,Keras,Confusion Matrix,我正在使用keras解决一个多类问题。我的数据非常不平衡,所以我试图创建类似于混淆矩阵的东西。我的数据集非常大,并保存为HDF5,因此我使用HDF5Matrix获取X和Y,使scikit学习混淆矩阵不相关(据我所知)。 我已经看到有可能,或者更优雅的解决方案是创建一个多维度量来累加(预测的,真实的)标签对(有点像混淆矩阵)。 我使用了以下回调来尝试和窥探每个批次/历元的情况: from keras.callbacks import LambdaCallback batch_print_callb

我正在使用keras解决一个多类问题。我的数据非常不平衡,所以我试图创建类似于混淆矩阵的东西。我的数据集非常大,并保存为HDF5,因此我使用HDF5Matrix获取X和Y,使scikit学习混淆矩阵不相关(据我所知)。 我已经看到有可能,或者更优雅的解决方案是创建一个多维度量来累加(预测的,真实的)标签对(有点像混淆矩阵)。 我使用了以下回调来尝试和窥探每个批次/历元的情况:

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))
但它只累积一个值(通常是排序的平均值)

我还尝试查看是否可以按如下方式返回y_pred/y_true(尝试查看是否可以在日志中打印多维值):

但是,它并没有像我预期的那样返回多维值
所以基本上,我的问题是,我能用keras来累加多维度量吗?

好吧,据我所知,这是不可能的,因为在返回张量值之前,应用了K.mean。我在keras github上发布了一篇关于这个的文章。 我提出的最好的设计是为混淆矩阵中的每个单元格设置一个度量,并由问题中提到的线程输入一个回调来收集它们。 可以找到一种有效的解决方案

def pred(y_true, y_pred):
     return y_pred

def true(y_true, y_pred):
    return y_true