gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:43:01 24 4
gpt4 key购买 nike

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

Custom Keras metric

其中 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])

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

raise TypeError("Using a tf.Tensor as a Python bool is not allowed. " "Use if t is not None: instead of if t: to test if a " "tensor is defined, and use TensorFlow ops such as "

TypeError: Using a tf.Tensor as a Python bool is not allowed. Use if t is not None: instead of if t: to test if a tensor is defined, and use TensorFlow ops such as tf.cond to execute subgraphs conditioned on the value of a tensor.

最佳答案

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

尝试:

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

关于python - 使用 Keras 创建自定义条件指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51902088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com