【发布时间】:2016-11-24 16:12:58
【问题描述】:
我正在尝试计算倾斜损失,这反过来将在 Keras 中使用。但是,我一定是做错了什么,因为我得到了负损失值(这应该是不可能的)。谁能指出我做错了什么。我假设这是我弄错的 theano 语法。
损失在数学上定义为: 其中 $\xi_i = y_i - f_i$ 其中 $y_i$ 是观察值,$f_i$ 是预测值。此外,我在平均损失之后,因此我将损失函数定义为:
$$
\mathcal{L} = \frac{\alpha\sum \xi_i-\sum I(\xi_i<0)\xi_i}{N}
$$
其中 $I()$ 是指标函数,如果为真,则取值为 1。
因此我的损失函数定义如下:
def tilted_loss2(y,f):
q = 0.05
e = (y-f)
return (q*tt.sum(e)-tt.sum(e[e<0]))/e.shape[0]
但是,当我运行我的网络时,我得到了负值。这里的theano语法有问题吗?我最大的怀疑在这里:tt.sum(e[e<0]))。可以这样切片吗?
任何想法都将不胜感激。
【问题讨论】: