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

时间:2018-09-06 13:43:40

标签: python tensorflow neural-network keras deep-learning

我正在处理高度偏斜的计数数据集,该数据集通常适合负二项式。我想使用负二项式作为前馈神经网络上Keras或Tensorflow中的损失函数。

据我所知,在查看了可用的损失函数后,此类函数对于keras或tensorflow不存在(尽管我希望我错了,但我只是错过了一些东西)。

我环顾四周,我看到一些帖子建议仅将损失换成负二项式,但是在张量流中创建自定义损失似乎不只是将其替换为tf.contrib.distributions。负二项式

有几篇文章谈论为Tensorflow / keras创建自定义损失函数,例如:https://datascience.stackexchange.com/questions/25029/custom-loss-function-with-additional-parameter-in-keras 看完之后,我正在努力弄清楚如何编写代码。

我想知道是否1)有人已经使用负二项式创建了损失函数并愿意分享其编码方式,还是2)关于如何实现此功能的技巧。

我在这个项目上专门从事python工作。

提前了解所有帮助。

1 个答案:

答案 0 :(得分:0)

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

def custom_loss(y_true, y_pred):
    ...
    loss = ...
    return loss

将y_true和y_pred视为张量。 (这意味着您无需使用np.pow(y_true,2)之类的功能,而应使用tensorflow或keras.backend中的功能)

通过自定义损失函数作为编译参数

model.compile(loss=custom_loss, optimizer='your favorite optimizer')