自定义损失函数——注意小区域

Custom Loss Function - Attention to small regions

我想使用包含注意力模型所用区域表达式的损失函数。

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

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

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

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

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

制作一个模型,输出两个东西,y_predA:

#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,))], ...)