张量流非对称损失函数

时间:2018-07-12 01:53:59

标签: python tensorflow loss-function

我想实现一个非对称损耗函数,如此处引用

https://stats.stackexchange.com/questions/37955/how-to-design-and-implement-an-asymmetric-loss-function-for-regression

在TensorFlow中为

我目前正在使用均方误差损失函数:

mse = tf.reduce_mean(tf.squared_difference(out,Y))

我想替换为 mse = tf.reduce_mean(asymetric_squared_difference(out,Y,alpha))

我希望查看tf.squared_difference的定义位置,并发现https://www.tensorflow.org/api_docs/python/tf/squared_difference 其中说tensorflow / python / ops / gen_math_ops.py

编辑: 经过大量挖掘之后,从ops.math_grad的999行到1012调用了SquaredDifference。但是它有很多额外的渐变功能,我不确定该如何复制。

我最好如何添加此功能?

1 个答案:

答案 0 :(得分:0)

您是要实现自己的函数,还是只想使用任何非对称函数(应该可以用作损失函数,因为“损失”函数只是用于控制的函数的标签)损失)

这里大多数不对称的功能应该兼容。

最重要的是,您可以使用

tf.zeta(x,q)

代替

tf.squared_difference(x,y)

用非对称函数(tf.zeta)替换对称损失函数(tf.squared_difference)。

如果您仍想实现损失函数,则必须在两个Tensor上定义操作(同时还要观察我遗漏的未列出的name函数参数),返回结果just like tf.zeta does

此外,您应该查看满足您需求的"Forecasting unemployment rate. . ." paper,如your link to the "Cross validated" stack exchange post that sent you on your journey中突出显示的那样:)它包含非对称损耗函数所需的基本表达式的等式,这就是我所使用的在"Basic Math Functions"的TensorFlow文档中搜索tf.zeta

但是我可能完全错了。我不知道。我不使用TensorFlow。 。 。