gpt4 book ai didi

python - y_pred 的自定义损失函数 Keras 仅高于某个阈值

转载 作者:行者123 更新时间:2023-12-04 09:37:10 27 4
gpt4 key购买 nike

如何在 keras 回归中编写自定义损失函数,其中仅针对高于某个阈值的 y_pred 计算 MAE。
例如。 y_true = [10 , 14 , 23 , 30 , 5 , 4] ,
y_pred = [8, 12, 27, 38, 10, 8]
如何编写自定义损失函数,其中仅计算 y_pred 值高于 20 的 MAE(平均绝对误差),即 y_pred > 20 的 MAE,即 [23,30] 等于 6 [(27-23) + (38-30) ]/2
出现这个问题是因为我需要的模型只能正确预测最高范围的预测,以便我只能使用那些仅返回最高预测的数据点,因为其余较低的预测数据对我没有用。
就像是 -

def custom_loss(y_pred, y_true):
for y_pred > 20:
result =MAE(y_pred , y_true)
return result

最佳答案

以这种方式尝试

def custom_loss(y_true, y_pred):

y_pred = y_pred[y_pred>20]
y_true = y_true[y_pred>20]

return tf.reduce_mean(tf.abs(y_true-y_pred))

n_sample = 1000
X = np.random.uniform(0,5, (n_sample,10))
y = np.random.randint(0,50, n_sample)

inp = Input((10,))
x = Dense(32, activation='relu')(inp)
out = Dense(1)(x)
model = Model(inp, out)

model.compile('adam',loss=custom_loss)
model.fit(X,y, epochs=10)
这种损失可能会导致 nan 因为可能会发生批量所有预测都低于 20 所以要注意预测的大小

关于python - y_pred 的自定义损失函数 Keras 仅高于某个阈值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62519601/

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