【发布时间】:2020-05-22 16:03:21
【问题描述】:
我正在研究 Keras 中的多输出模型。我已经实现了两个自定义指标 auroc 和 auprc,它们被传递给 Keras 模型的 compile 方法:
def auc(y_true, y_pred, curve='PR'):
score, up_opt = tf.compat.v1.metrics.auc(y_true, y_pred, curve=curve, summation_method="careful_interpolation")
K.get_session().run(tf.local_variables_initializer())
with tf.control_dependencies([up_opt]):
score = tf.identity(score)
return score
def auprc(y_true, y_pred):
return auc(y_true, y_pred, curve='PR')
def auroc(y_true, y_pred):
return auc(y_true, y_pred, curve='ROC')
mlp_model.compile(loss=...,
optimizer=...,
metrics=[auprc, auroc])
使用这种方法,我获得了每个输出的 auprc/auroc 值,但是,为了使用贝叶斯优化器优化我的超参数,我需要一个指标(例如:每个输出的 auprc 的平均值或总和)。我不知道如何将我的指标合并为一个指标。
编辑:这里是期望结果的示例
现在每个时期都会打印以下指标:
out1_auprc: 0.0267 - out2_auprc: 0.0277 - out3_auprc: 0.0294
out1、out2、out3 是我的神经网络输出,我希望获得类似的东西:
average_auprc: 0.0279 - out1_auprc: 0.0267 - out2_auprc: 0.0277 - out3_auprc: 0.0294
我正在使用 Keras Tuner 进行贝叶斯优化。
感谢任何帮助,谢谢。
【问题讨论】:
标签: python tensorflow machine-learning keras deep-learning