倾斜损失

2024-07-05 12:55:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图计算倾斜损失,这将用于Keras。但是,我一定是做错了什么,因为我得到了负损失值(这应该是不可能的)。我可以指出谁做错了什么。我想我弄错的是theano语法。在

损失在数学上定义为: enter image description here 其中$xiii= yyi-ffi$$,其中$yii $是观察值,$fii-$是预测。此外,我在平均损失之后,因此我将损失函数定义为:

$$
\mathcal{L} = \frac{\alpha\sum \xi_i-\sum I(\xi_i<0)\xi_i}{N}
$$

其中,$I()$是指示符函数,如果为真,则采用值1。在

因此,我的损失函数定义如下:

^{pr2}$

然而,当我运行我的网络时,我得到了负值。这里的theano语法有什么问题吗?我最大的怀疑是:tt.sum(e[e<0]))。你能把它切成这样吗?在

任何想法都将不胜感激。在


Tags: 函数定义语法数学theanokerassum损失
1条回答
网友
1楼 · 发布于 2024-07-05 12:55:05

你不能这样切。see this answer

您需要更改损失函数,如下所示:

def tilted_loss2(y,f):
    q = 0.05
    e = (y-f)
    return (q*tt.sum(e)-tt.sum(e[(e<0).nonzero()]))/e.shape[0]

您也可以尝试使用abs函数来代替可能不起作用的复杂切片语法:

^{pr2}$

相关问题 更多 >