自定义积分损失项Keras
我想在Keras中定义一个自定义损失函数,其中有一个附加项,它是神经网络输出域的一个整体。因此,这看起来像:自定义积分损失项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)。
不完全。这个想法是我需要在独立于我的数据的点上评估网络本身。我想我的问题的一部分是,如果它允许评估损失函数内的网络?我想可能会使事情复杂化,因为网络是有状态的,但我可能是错的。如果我这样做,Keras仍然会管理自动分化。 – pragmatist1
只要你继续使用后端函数,并且不放弃'y_pred'值,它将是可区分的。但是,这种评估可能需要在培训批次之间完成,首先评估,存储值,然后适合批次。评估本身将被视为有关差异化的常数值。 –
您可以添加更多关于您的模型如何定义(特别是输出)的细节? –