Python Keras Custom Loss,在损失函数中使用来自输入的特征
Python Keras Custom Loss, use feature from input in loss function
我正在尝试为 Keras 回归任务创建自定义损失函数。
我正在预测一场比赛中每分钟得分,并在 "matches" 上训练可变长度,以分钟为单位。为了帮助模型学习,我想将小组比赛的分钟数包括在损失函数中,这样我们就可以正确地 "punish" 丢失持续时间较长的小组。
我知道我需要使用 Keras Backend/tensor 操作,但我一直在研究如何乘以分钟张量。这是我到目前为止的一些基本代码(伪 code/skipped 不重要):
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
部分上。
提前致谢!
要在图表中使用分钟,它需要是一个张量,除非分钟是一个常数,它在程序的生命周期内具有固定值(在这种情况下,您正在做的事情应该有效)。
我正在尝试为 Keras 回归任务创建自定义损失函数。
我正在预测一场比赛中每分钟得分,并在 "matches" 上训练可变长度,以分钟为单位。为了帮助模型学习,我想将小组比赛的分钟数包括在损失函数中,这样我们就可以正确地 "punish" 丢失持续时间较长的小组。
我知道我需要使用 Keras Backend/tensor 操作,但我一直在研究如何乘以分钟张量。这是我到目前为止的一些基本代码(伪 code/skipped 不重要):
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
部分上。
提前致谢!
要在图表中使用分钟,它需要是一个张量,除非分钟是一个常数,它在程序的生命周期内具有固定值(在这种情况下,您正在做的事情应该有效)。