keras - 当目标是高斯标签时,最好的损失函数可能是什么?
问题描述
我有一个简单的 CNN,输入为
- 大小为 MxN 的裁剪灰度补丁以感兴趣的对象为中心。每个补丁的强度重新调整为 [0, 1]。
- 具有相同大小 MXN 的目标高斯标签,其值范围在 [5.0155e-173, 1]。这个标签在整个训练过程中保持固定。
目标是学习目标标签并使用学习模型检测测试图像中的对象。我正在使用具有各种损失函数的 Adam 优化器,例如categorical_crossentropy
, mean_squared_error
,mean_absolute_error
但是训练很快就会停止,这可能是由于所有这些损失函数返回的值都很低(梯度消失?)。将批大小从 1 增加到 16~32 有时有助于完成迭代,但在测试时会产生不希望的结果。
是不是因为损失函数对目标中的较低值过于敏感,甚至将它们视为异常值,从而将整个学习过程导向错误的方向?
在这种情况下,我将感谢您在修复损失函数方面的帮助。
解决方案
我认为这里最好的选择是使用一些概率分布伪距离,我想到的第一个选择是使用Kullback-Leiber Divergence,它已经在pytorch和keras中实现(参见[kldivloss](https:// /pytorch.org/docs/stable/nn.html#kldivloss和keras)其他著名的距离可能包括 Jesnsen-Shanon 散度和 Earth-Mover 距离(这与WGAN中使用的距离相同
推荐阅读
- jwt - 为什么 Quarkus JWT 在每个端点上都未经授权返回
- c# - 如何使用 void OnTriggerEnter2D 禁用脚本?
- javascript - 是否可以使用 HERE API 获取城市的所有地区
- java - GitHub API 未创建文件
- flutter - Flutter Dropdownbutton选择的值没有改变
- android - 将手机位置从移动应用程序发送到服务器的最佳方式是什么?
- azure-devops - DevOps Release Pipeline 本地 TaskModuleSqlUtility
- docker - 有没有办法将保存的 docker tarball 目录传递给 Anchore 内联扫描?
- firebase - 我可以从数据库中搜索所有推送 id 而不必在应用程序端进行吗
- git - Git Fetch:权限被拒绝