ValueError:操作没有渐变。在实现不同层之间的自定义keras损耗时

ValueError:操作没有渐变。在实现不同层之间的自定义keras损耗时,keras,tensorflow2.0,loss-function,consensus,Keras,Tensorflow2.0,Loss Function,Consensus,我正试图在keras中实现一个自定义损失函数 我的目标函数是 协商一致协议 交叉熵 其中fi是不同层的输出,ui是权重 #f123 = concatenate([f1, f2, f3]) #f = Dense(1, activation="sigmoid")(f123) def consensus(f1,f2,f3, f): def loss(y_true, y_pred): CP = K.square(f1-f2) + K.square(f2-f3) + K.square(f

我正试图在keras中实现一个自定义损失函数

我的目标函数是

  • 协商一致协议
  • 交叉熵
  • 其中fi是不同层的输出,ui是权重

    #f123 = concatenate([f1, f2, f3])
    #f = Dense(1, activation="sigmoid")(f123)
    
    
    def consensus(f1,f2,f3, f):
    
    def loss(y_true, y_pred):
        CP = K.square(f1-f2) + K.square(f2-f3) + K.square(f3-f1)
        CE = tf.keras.losses.BinaryCrossentropy() 
        L = CE(y_true, f)
        return CP + L
    return loss
    
    其中f是

    我得到以下错误日志

    raise VALUE ERROR('一个操作对梯度有
    None
    。'
    ValueError:一个操作有
    None
    渐变。请确保您的所有操作都定义了渐变(即可微分)。没有渐变的常见操作:K.argmax、K.round、K.eval。

    您可以查看此链接吗-