首页 > 解决方案 > 自定义损失函数 - 注意小区域

问题描述

我想使用一个损失函数,其中包含注意力模型使用的区域的表达式。

我的模型是一个分类模型,旨在根据原始图像的一小部分区域执行决策。

所以我希望我的损失函数是:

Loss = categorical_crossentropy(y_pred, y_true) + alpha*A

其中 A 是注意力模型的区域。

如何在 Keras 中创建自定义损失函数,以最小化标准损失的总和 + 一些附加函数?

标签: tensorflowkerasloss-function

解决方案


制作一个输出这两种东西的模型,y_pred并且A

#blablabla functional API model definition
model = Model(inputs, [predictions, areaOutput])

进行自定义面积损失:

def areaLoss(trueArea, predArea):
    return predArea

编译每个输出一个损失的模型,并alpha用作面积损失的权重:

model.compile(loss=['categorical_crossentropy', areaLoss], loss_weights=[1,alpha], ...)

拟合该区域的虚拟值作为输出:

model.fit(x_train, [y_train, np.zeros((totalSamples,))], ...)

推荐阅读