gpt4 book ai didi

python - (自定义)百分位 MSE 损失函数

转载 作者:行者123 更新时间:2023-12-03 23:08:26 24 4
gpt4 key购买 nike

我有一个 Keras 模型,它有输入 x_1,...,x_n 和 d 维输出 f(x_1),...,f(x_n)。我正在研究 d 维目标 y_1,...,y_n 的回归问题。

我想最小化损失函数:
对于介于 0 和 1 之间的固定元参数 a,返回 |f(x_i)-y_i|^2 的第 a^ 个(经验)分位数.

这是我到目前为止编码的内容:

def keras_custom_loss(y_true,y_predicted):
SEs = K.square(y_true-y_predicted)
out_custom = tfp.stats.percentile(SEs, 50.0, interpolation='midpoint')
return out_custom

一个问题是我想避免使用 tensorflow_probability 并且我希望在 Keras 上完成整个实现。

但是,我无法弄清楚如何。

最佳答案

对于您的特定用例,您可以使用以下函数,它是 tfp.stats.percentile 的简化版本(他们使用 Apache License 2.0 ):

import tensorflow as tf

def percentile(x, p):
with tf.name_scope('percentile'):
y = tf.transpose(x) # take percentile over batch dimension
sorted_y = tf.sort(y)
frac_idx = tf.cast(p, tf.float64) / 100. * (tf.cast(tf.shape(y)[-1], tf.float64) - 1.)
return 0.5 * ( # using midpoint rule
tf.gather(sorted_y, tf.math.ceil(frac_idx), axis=-1)
+ tf.gather(sorted_y, tf.math.floor(frac_idx), axis=-1))

关于python - (自定义)百分位 MSE 损失函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60707780/

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