pytorch-grad-cam icon indicating copy to clipboard operation
pytorch-grad-cam copied to clipboard

error when using for densenet121, for 2 output classes.

Open aryan-at-ul opened this issue 2 years ago • 5 comments

grayscale_cam = cam(input_tensor=input_tensor, targets=targets)

File "/home/melkor/projects/pytorch-grad-cam/pytorch_grad_cam/base_cam.py", line 188, in call return self.forward(input_tensor, File "/home/melkor/projects/pytorch-grad-cam/pytorch_grad_cam/base_cam.py", line 95, in forward cam_per_layer = self.compute_cam_per_layer(input_tensor, File "/home/melkor/projects/pytorch-grad-cam/pytorch_grad_cam/base_cam.py", line 127, in compute_cam_per_layer cam = self.get_cam_image(input_tensor, File "/home/melkor/projects/pytorch-grad-cam/pytorch_grad_cam/base_cam.py", line 50, in get_cam_image weights = self.get_cam_weights(input_tensor, File "/home/melkor/projects/pytorch-grad-cam/pytorch_grad_cam/grad_cam.py", line 22, in get_cam_weights return np.mean(grads, axis=(2, 3)) File "<array_function internals>", line 180, in mean File "/home/melkor/miniconda3/envs/graph-classificatio/lib/python3.9/site-packages/numpy/core/fromnumeric.py", line 3474, in mean return _methods._mean(a, axis=axis, dtype=dtype, File "/home/melkor/miniconda3/envs/graph-classificatio/lib/python3.9/site-packages/numpy/core/_methods.py", line 167, in _mean rcount = _count_reduce_items(arr, axis, keepdims=keepdims, where=where) File "/home/melkor/miniconda3/envs/graph-classificatio/lib/python3.9/site-packages/numpy/core/_methods.py", line 76, in _count_reduce_items items *= arr.shape[mu.normalize_axis_index(ax, arr.ndim)] numpy.AxisError: axis 2 is out of bounds for array of dimension 0

target_layers = [model.features[-1]] # as mentioned in example, #[BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)]. densenet121

target = 0 or 1 targets = [ClassifierOutputTarget(target)]

aryan-at-ul avatar Feb 24 '23 12:02 aryan-at-ul

How many output neurons does the model have in this case? Is it 1 or 2? If 1 (representing two classes), you can use https://github.com/jacobgil/pytorch-grad-cam/blob/master/pytorch_grad_cam/utils/model_targets.py#L26

from pytorch_grad_cam.utils.model_targets import  BinaryClassifierOutputTarget

jacobgil avatar Mar 15 '23 09:03 jacobgil

Hi, I am getting the same error. I have 2 output neurons in my case

siddharth1712 avatar Mar 20 '23 06:03 siddharth1712

Hey, did anyone find a solution to this? this is roadblock for me as well.

JVedant avatar Jul 05 '23 16:07 JVedant

numpy.AxisError: axis 2 is out of bounds for array of dimension 2

I meet the same question, do you solve it? thanks

wujiang0156 avatar Dec 29 '23 04:12 wujiang0156

How to add it to training as a loss

tongchangD avatar May 15 '24 02:05 tongchangD