Skip to main content
 首页 » 编程设计

python之自定义积分损失项 Keras

2025年05月04日8zhujiabin

我正在尝试在 Keras 中定义一个自定义损失函数,其中我有一个附加项,它是神经网络输出域的积分。所以这看起来像:

关键是积分遍及我指定的整个域,而不仅仅是训练数据。我不介意使用任何形式的正交来评估积分,我只需要能够评估它。目前,就文档所述而言,这不可能对自定义损失进行处理,因为它仅提供对 y_pred 和 y_true 的访问。

有什么方法可以在 Keras 中实现这一点?

请您参考如下方法:

如果这个想法只是定义额外的变量,您可以在损失函数内部(局部)或外部(全局)执行此操作,使用 keras 后端函数:

import keras.backend as K 
 
myDomain = K.variable(range(100)) / 10 #for instance   
 
def custom_loss(y_true,y_pred): 
    localVar = K.variable([[1,2],[3,1]]) 
 
    return calculationsWith(y_true,y_pred,localVar,myDomain)   

请务必使用来自后端的函数进行计算。 (来自 K 或直接来自 tensoflow、theano 或 CNTK)。