我想使用损失函数,其中包括注意力模型使用的区域的表达式。
我的模型是一种分类模型,旨在基于原始图像的一小部分区域执行决策。
所以我希望我的损失函数是:
Loss = categorical_crossentropy(y_pred, y_true) + alpha*A
其中A是注意力模型中的区域。
如何在Keras中创建自定义损失函数,以最小化标准损失和某些附加函数的总和?
答案 0 :(得分:1)
建立一个同时输出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,))], ...)