tensorflow - 自定义损失函数 - 注意小区域
问题描述
我想使用一个损失函数,其中包含注意力模型使用的区域的表达式。
我的模型是一个分类模型,旨在根据原始图像的一小部分区域执行决策。
所以我希望我的损失函数是:
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,))], ...)
推荐阅读
- kubernetes - jhipster kubernetes 部署没有redis
- javascript - 单击Jquery中的弹出按钮后如何显示刻度线?
- java - 在 Java Swing 中为 JFrame 添加背景
- lag - 如何更改项目监视器中的渲染速度?
- php - 为什么在我实时上传时插入语句不起作用?但是当在 localhost 上完美运行时
- javascript - 无法读取未定义的属性“包含” - 快速路由
- angular - Angular 中的二进制输入验证器(TypeScript)
- ssms - SQL Server Management Studio 安装期间出现致命错误 0x80070643
- robotframework - 如何将查询结果打印到控制台 | 机器人框架
- php - PHP for 循环仅每两行有效