我正在尝试为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
部分。
提前致谢!
为了在图中使用分钟,它需要是一个张量,除非分钟是一个常量,它在程序的生命周期中具有固定值(在这种情况下,你正在做什么应该工作)。