我想实现一个非对称损耗函数,如此处引用
在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。但是它有很多额外的渐变功能,我不确定该如何复制。
我最好如何添加此功能?
答案 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。 。 。