我有一个带有 2 个输出的图像分类器。我正在尝试检查图像中最重要的像素,如果受到干扰可能会影响模型输出(对模型输出影响最大的像素)。
我的最后一层如下:
model.add(Dense(2, activation="softmax"))
model.compile(loss="categorical_crossentropy")
所以模型有 2 个输出 y1,y2。对于输入图像 x=x0,我正在尝试计算 dy1/dx|x=x0, dy2/dx|x=x0
我有以下问题:
a)我可以通过使用 softmax 输出来计算梯度,还是应该使用模型的 logits。
b) 现在对于图像 x0,它的预测是 y1(即 y1 > y2)。计算梯度后,我得到两个向量(与输入图像大小相同)对应于 dy1/dx|x=x0 和 dy2/dx|x=x0。我如何使用这些来识别对模型输出影响最大的像素(即使模型输出类的数量大于 2 也能工作)
c)这些梯度与输入的损失梯度有何不同。
希望对此进行任何澄清/代码。