如何在纪元结束时注销 Keras 自定义损失组件?

How to log out Keras custom loss component at the end of an epoch?

我有一个自定义损失函数,格式如下:

def CustomLoss(y_true,y_pred):
    ......
    loss = loss1 + loss2 + loss3
    return loss

我怎样才能 return 每个损失分量 (loss1, loss2, loss3) 在一个纪元结束时?默认只能观察loss。

通常情况下,如果我们有多个输出,keras可以很容易地显示出来。但是如何像我提到的那样显示值组件?

您需要为每个损失单独创建一个函数,并在编译模型时将它们传递给metrics,如下所示

def CustomLoss():
    ......
    return loss1() + loss2() + loss3()

def Loss1():
    ......
    return value1

def Loss2():
    ......
    return value2

def Loss3():
    ......
    return value3


model.compile(optimizer=Adam(),
                       loss=CustomLoss,
                       metrics=[Loss1, Loss2, Loss3])