Keras中的自定义损失函数
computer-vision
conv-neural-network
deep-learning
keras
8
0

我正在研究使用CNN作为特征提取器和完全连接的块进行分类的图像类增量分类器方法。

首先,我对VGG训练有素的网络进行了微调,以完成一项新任务。在为新任务训练了网络之后,我将为每个课程存储一些示例,以避免忘记新课程可用的时间。

当某些类可用时,我必须计算出示例的每个输出,包括新类的示例。现在为旧类的输出添加零,并在新类输出上添加与每个新类相对应的标签,我有我的新标签,即:如果输入3个新类...。

旧类类型输出: [0.1, 0.05, 0.79, ..., 0 0 0]

新的类类型输出: [0.1, 0.09, 0.3, 0.4, ..., 1 0 0] **最后的输出对应于类。

我的问题是,如何更改自定义函数的损失函数以训练新的类?我要实现的损失函数定义为:

损失函数

其中蒸馏损失对应于旧类以避免遗忘的输出,分类损失对应于新类。

如果您可以提供一个示例代码来更改keras中的损失函数,那就更好了。

谢谢!!!!!

参考资料:
Stack Overflow
收藏
评论
共 1 个回答
高赞 时间 活跃

您所要做的就是为此定义一个函数,使用keras后端函数进行计算。该函数必须采用真实值和模型预测值。

现在,由于我不确定函数中的g,q,x和y是什么,因此我将在此处创建一个基本示例,而不关心它的含义或它是否是实际有用的函数:

import keras.backend as K

def customLoss(yTrue,yPred):
    return K.sum(K.log(yTrue) - K.log(yPred))

可以在此处查看所有后端功能: https : //keras.io/backend/#backend-functions

之后,使用该函数而不是常规函数来编译模型:

model.compile(loss=customLoss, optimizer = .....)
收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号