Python 自定义Keras损失(不具有形式f(y_true,y_pred))

Python 自定义Keras损失(不具有形式f(y_true,y_pred)),python,keras,deep-learning,Python,Keras,Deep Learning,我想使用此成本函数,并针对U和V对其进行优化。我目前正努力使其与Keras一起工作,因为Keras损失函数只能具有形式f(y_true,y_pred) 我的模型完全没有监督,我没有基本的事实。I_x,I_y和I_t是常数,模型的目标是学习使E(F)最小的U和V。所以我的问题是: 在Keras中实现这种损失函数(不具有f形式(y_true,y_pred))的正确方法是什么?我认为您可能需要修改代码以调整Keras的标准。如果网络无监督,您可以让y_pred==y_ture像自动编码器一样定义损耗

我想使用此成本函数,并针对U和V对其进行优化。我目前正努力使其与Keras一起工作,因为Keras损失函数只能具有形式f(y_true,y_pred)

我的模型完全没有监督,我没有基本的事实。I_x,I_y和I_t是常数,模型的目标是学习使E(F)最小的U和V。所以我的问题是:
在Keras中实现这种损失函数(不具有f形式(y_true,y_pred))的正确方法是什么?

我认为您可能需要修改代码以调整Keras的标准。如果网络无监督,您可以让
y_pred==y_ture
像自动编码器一样定义损耗函数,如下所示:

def charbonnier(I_x, I_y, I_t, U, V, e):
    loss = K.sqrt(K.pow((U*I_x + V*I_y + I_t), 2) + e)
    return K.sum(loss)

不确定为什么没有选择此选项作为正确答案。
def charbonnier(I_x, I_y, I_t, U, V, e)
    def loss_fun(y_true, y_pred):
        loss = K.sqrt(K.pow((U*I_x + V*I_y + I_t), 2) + e)
        return K.sum(loss)
    return loss_fun