使用 Keras 创建自定义条件指标

2024-03-07

我正在尝试使用 keras 为我的神经网络创建以下指标:

自定义 Keras 指标 https://i.stack.imgur.com/fSg0o.png

其中 d=y_{pred}-y_{true}

y_{pred} 和 y_{true} 都是向量

使用以下代码:

将 keras.backend 导入为 K

def score(y_true, y_pred):
        d=(y_pred - y_true)
        if d<0:
            return K.exp(-d/10)-1
        else:
            return K.exp(d/13)-1

用于编译我的模型:

model.compile(loss='mse', optimizer='adam', metrics=[score])

我收到以下错误代码,但无法纠正该问题。任何帮助,将不胜感激。

引发类型错误(“使用tf.Tensor作为Pythonbool不是 允许。 “ “使用if t is not None:代替if t:测试是否“ “定义张量,并使用 TensorFlow 操作,例如”

类型错误:使用tf.Tensor作为Pythonbool不允许。使用if t is not None:代替if t:测试是否定义了张量, 并使用 TensorFlow 操作(例如 tf.cond)来执行子图 以张量的值为条件。


您提供的指标不是每次执行的函数,而是需要评估的函数(计算图)的构造。所以它需要是确定性的。

Try:

def score(y_true, y_pred):
    d = y_pred - y_true
    mask = K.less(y_pred, y_true)  # element-wise True where y_pred < y_pred
    mask = K.cast(mask, K.floatx())  # cast to 0.0 / 1.0
    s = mask * (K.exp(-d / 10) - 1) + (1 - mask) * (K.exp(d / 13) - 1)  
    # every i where mask[i] is 1, s[i] == (K.exp(-d / 10) - 1)
    # every i where mask[i] is 0, s[i] == (K.exp(d / 13) - 1)
    return s
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Keras 创建自定义条件指标 的相关文章

随机推荐