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

JCM*_*MRE 5 python neural-network deep-learning keras tensorflow

我正在使用一个高度偏斜的计数数据集,该数据集通常适合负二项式。我想在前馈神经网络上的 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 看了之后这个,我正在努力弄清楚如何编码这个。

我想知道是否 1) 任何人已经使用负二项式创建了一个损失函数,并愿意分享它是如何编码的,或者 2) 有关如何进行这项工作的提示。

我在这个项目中专门使用 python 工作。

提前感谢所有帮助。

小智 1

我不知道负二项式损失,但我知道如何实现自定义损失函数

def custom_loss(y_true, y_pred):
    ...
    loss = ...
    return loss
Run Code Online (Sandbox Code Playgroud)

将 y_true 和 y_pred 视为张量。(这意味着您需要使用tensorflow或keras.backend中的函数,而不是使用np.pow(y_true,2)等函数)

将您的自定义损失函数作为编译参数传递

model.compile(loss=custom_loss, optimizer='your favorite optimizer')
Run Code Online (Sandbox Code Playgroud)