张量流中的循环损失

时间:2016-12-05 09:17:53

标签: python tensorflow deep-learning keras-layer

我想构建一个网络,对于给定的输入,它可以预测一天中的小时。结果应该在0到24之间。

我试图将其解决为分类问题,但这似乎不是正确的方法。我的问题是我不知道如何构建循环丢失函数。例如,在我的情况下,如果网络输出为1且真实标签为23,我希望距离为2而不是22.是否有可以使用的层?

1 个答案:

答案 0 :(得分:1)

据我所知,没有预先编写的循环丢失功能。对于循环丢失,您应该编写自己的损失函数,如下所示:

import keras.backend as K
def cyclic_loss(y_true, y_pred): 
    return K.min((y_pred +24 - y_true) % 24, (y_true + 24 - y_pred) % 24)

model.compile(optimizer='sgd', loss=cyclic_loss, metrics=['acc'])

然而,如果你定义这样的损失,这不是一个分类问题。如果您需要分类问题,则应使用单热编码对输出进行编码,并使用交叉熵作为丢失函数。那么你有一天中每小时的概率,你以最高的概率占用小时。

作为回归任务,您可以使用上述循环损失功能。