Keras自定义损失功能

问题描述

我想实现以下自定义损失函数,并将参数x作为最后一层的输出。到目前为止,我将此功能实现为Lambda层,再加上keras mae丢失,但我不再想要了

def GMM_UNC2(self,x):
    tmp = self.create_mr(x) # get mr series
    mr  = k.sum(tmp,axis=1) # sum over time
    tmp = k.square((1/self.T_i) * mr)
    tmp = k.dot(tmp,k.transpose(self.T_i))
    tmp = (1/(self.T * self.N)) * tmp

    f   = self.create_factor(x) # get factor
    std = k.std(f)
    mu  = k.mean(f)
    tmp = tmp + std/mu 

    def loss(y_true,y_pred=tmp):
        return k.abs(y_true-y_pred)

    return loss

self.y_true = np.zeros((1,1))
self.sdf_net = Model(inputs=[self.in_ma,self.in_mi,self.in_re,self.in_si],outputs=w)
self.sdf_net.compile(optimizer=self.optimizer,loss=self.GMM_UNC2(w))
self.sdf_net.fit([self.macro,self.micro,self.R,self.R_sign],self.y_true,epochs=epochs,verbose=1)

代码实际上可以运行,但是实际上并没有使用tmp作为损失的输入(我将其乘以某个数字,但是损失保持不变)

我在做什么错了?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)