【发布时间】:2017-04-09 20:43:42
【问题描述】:
我想创建一个自定义目标函数来训练 Keras 深度网络。我正在研究不平衡数据的分类,我在 scikit-learn 中经常使用 F1 分数。因此,我有了反转 F1 指标(1 - F1 分数)的想法,将其用作 Keras 在训练时最小化的损失函数/目标:
(from sklearn.metric import f1_score)
def F1Loss(y_true, y_pred):
return 1. - f1_score(y_true, y_pred)
但是,来自 scikit-learn 的 f1_score 方法需要 numpy 数组或列表来计算 F1 分数。我发现需要使用 .eval() 将张量评估为对应的 numpy 数组,这需要 TensorFlow 会话来执行此任务。
我不知道 Keras 使用的会话对象。我尝试使用下面的代码,假设 Keras 后端在某处定义了自己的会话对象,但这也不起作用。
from keras import backend as K
K.eval(y_true)
诚然,这是在黑暗中的一次尝试,因为我现在并不真正了解 Keras 或 Tensorflow 的更深层次的工作原理。
我的问题是:如何将 y_true 和 y_pred 张量评估为对应的 numpy 数组?
【问题讨论】:
标签: python machine-learning tensorflow neural-network keras