Python 过度自信的模型预测导致全0梯度

Python 过度自信的模型预测导致全0梯度,python,tensorflow,machine-learning,keras,computer-vision,Python,Tensorflow,Machine Learning,Keras,Computer Vision,目前,我正在为我的CNN模型实施GradCAM(激活热图)。当我的信心不是100%时,它可以完美地工作(注意:这是一个多标签分类问题,所以我使用的是sigmoid激活,而不是softmax) 然而,当我的模型过于自信(字面上的自信为1.0(100%))时,我的最终输出层w.r.t的梯度,我的最终卷积的输出特征图都变为零 我认为这可能是因为为了获得100%的损失必须是0或接近-0。我尝试了几种关于损失张量的方法来解释这一点,包括剪裁、标准化(硬编码和使用tensorflow的l2_norm函数),

目前,我正在为我的CNN模型实施GradCAM(激活热图)。当我的信心不是100%时,它可以完美地工作(注意:这是一个多标签分类问题,所以我使用的是sigmoid激活,而不是softmax)

然而,当我的模型过于自信(字面上的自信为1.0(100%))时,我的最终输出层w.r.t的梯度,我的最终卷积的输出特征图都变为零

我认为这可能是因为为了获得100%的损失必须是0或接近-0。我尝试了几种关于损失张量的方法来解释这一点,包括剪裁、标准化(硬编码和使用tensorflow的l2_norm函数),以及简单地向其添加一个非常小的浮点(1e-5)

然而,一切都不起作用,我也找不到关于这个话题的任何资源。我是否错过了一个非常简单的可能有用的技巧或功能?或者这是我的模型架构中更深层次的问题


TLDR;如何规范化/调整模型的输出损耗张量,使其不包含0值?

为什么要将sigmoid用于多标签而不是softmax?这是没有意义的,因为每个示例可以属于一个或多个类。我理解softmax生成的值总是总和为1,这不是我的模型所希望的行为。