2

我正在尝试为 Keras 回归任务创建自定义损失函数。

我正在预测一场比赛中每分钟的得分,并以分钟为单位对可变长度的“比赛”进行训练。为了帮助模型学习,我想将小组玩的分钟数作为损失函数的一部分,这样我们就可以适当地“惩罚”长时间玩的小组的缺失。

我知道我需要使用 Keras 后端/张量操作,但我被困在如何乘以分钟张量。这是我到目前为止的一些基本代码(伪代码/在不重要的地方跳过):

def penalized_loss(minutes):
    def loss(y_true, y_pred):

        # Normal mean_squared_error
        lost = K.mean(K.square(y_pred - y_true), axis=-1)

        # Would like something like this where minutes are included, but as a valid tensor operation
        not_valid_result = K.mean(K.square(y_pred - y_true) * minutes, axis=-1)

        return lost

    return loss

minutes = np.array(of some sort)

def baseline_model():
    # create model here...
    # ....

    # Compile model
    model.compile(loss=[penalized_loss(minutes)], optimizer='adam')
    return model

在几分钟内通过的关闭按我的预期工作,我只是坚持如何进行* minutes损失计算的部分。

提前致谢!

4

1 回答 1

0

为了让您在图中使用分钟,它需要是一个张量,除非分钟是一个常数,它在程序的生命周期内具有固定值(在这种情况下,您正在做的事情应该有效)。

于 2017-12-22T19:21:47.057 回答