I’m a bit newbie with Captum, but I’ve trained a Pytorch densenet121 based classified for 224x224 medical images. Four output classes. Now I’d like to interpret results with Captum’s Guided GradCAM. Since Densenets have dense blocks and multiple interconnections, I’m a bit unsure what is the ultimately last conv layer that I should give as an argument. I’ve tried following:
gc = GuidedGradCam(net, net.features.denseblock4.denselayer16.layers.conv2)
attr_gc = attribute_image_features(gc, input, target=labels[ind])

viz.visualize_image_attr(attr_gc,
                         original_image,
                         method="heat_map",
                         sign="all",
                         show_colorbar=True, 
                         title="Guided GradCAM")

where the helper is similar to a Captum example:
def attribute_image_features(algorithm, input, target, **kwargs):
    net.zero_grad()    
    tensor_attributions = algorithm.attribute(input, target=target, **kwargs)
    
    if torch.cuda.is_available():
        torch.cuda.empty_cache()
    
    # convert to numpy C,W,H
    attr = np.transpose(tensor_attributions.squeeze(0).cpu().detach().numpy(), (1, 2, 0))
    
    return attr

But for some reason I get an attribution heatmap that kind of only displays values in some blocks in the image (see attachment).
Why is that and what should I fix? Thanks!