自定义损失功能-注意小区域

时间:2018-12-18 17:52:39

标签: tensorflow keras loss-function

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

建立一个同时输出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,))], ...)