使用Tensorflow/Keras的神经网络中的负二项损失函数

5
我正在处理一个高度倾斜的计数数据集,通常可以使用负二项式进行拟合。我想在Keras或Tensorflow上使用负二项式作为损失函数,在前馈神经网络中进行训练。
据我所知,经过查看可用的损失函数后,Keras或Tensorflow没有这样的函数(尽管我希望我是错误的,只是错过了什么)。
我已经搜索过,看到有帖子建议只需要更换损失函数即可将负二项式包含其中,但似乎在tensorflow中创建自定义损失不仅仅是用tf.contrib.distributions.NegativeBinomial替换它。
有几篇文章谈论如何为Tensorflow / Keras创建自定义损失函数,例如:https://datascience.stackexchange.com/questions/25029/custom-loss-function-with-additional-parameter-in-keras。但我看了之后还是无法编写代码。
我想知道是否有人已经使用负二项式创建了损失函数,并愿意分享如何编写代码,或者如果有关于如何实现这个问题的提示。
我在这个项目中只使用python。
提前感谢所有的帮助。

我正在尝试解决同样的问题。你有解决这个问题的运气吗?如何定义这样的损失和度量? - gugatr0n1c
1个回答

1
我不了解负二项损失,但我知道如何实现自定义损失函数。
def custom_loss(y_true, y_pred):
    ...
    loss = ...
    return loss

将y_true和y_pred视为张量。(这意味着您需要使用来自tensorflow或keras.backend的函数,而不是使用诸如np.pow(y_true,2)之类的函数)
将您的自定义损失函数作为编译参数传递。
model.compile(loss=custom_loss, optimizer='your favorite optimizer')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接