自定义损失函数——注意小区域
Custom Loss Function - Attention to small regions
我想使用包含注意力模型所用区域表达式的损失函数。
我的模型是一个分类模型,旨在根据原始图像的一个小区域执行决策。
所以我希望我的损失函数是:
Loss = categorical_crossentropy(y_pred, y_true) + alpha*A
其中 A 是注意力模型的区域。
如何在 Keras 中创建自定义损失函数,以最小化标准损失 + 一些附加函数的总和?
制作一个模型,输出两个东西,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,))], ...)
我想使用包含注意力模型所用区域表达式的损失函数。
我的模型是一个分类模型,旨在根据原始图像的一个小区域执行决策。
所以我希望我的损失函数是:
Loss = categorical_crossentropy(y_pred, y_true) + alpha*A
其中 A 是注意力模型的区域。
如何在 Keras 中创建自定义损失函数,以最小化标准损失 + 一些附加函数的总和?
制作一个模型,输出两个东西,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,))], ...)