title: Error when running Grad-CAM visualization
body: <p>I am using the open source Pytorch Grad-CAM code in order to visualize my model, which looks like this:</p>
  <pre><code>classifier = cnn.CNN(in_shape=(1,28,28), n_classes=10).cuda()
  </code></pre>
  <p>The Grad-CAM implementation is from here: <a href="https://github.com/jacobgil/pytorch-grad-cam/" rel="nofollow noreferrer">https://github.com/jacobgil/pytorch-grad-cam/</a></p>
  <p>However, when I run</p>
  <pre><code>def preprocess_image(img):
      means = [0.485, 0.456, 0.406]
      stds = [0.229, 0.224, 0.225]
  
      preprocessed_img = img.copy()[:, :, ::-1]
      for i in range(3):
          preprocessed_img[:, :, i] = preprocessed_img[:, :, i] - means[i]
          preprocessed_img[:, :, i] = preprocessed_img[:, :, i] / stds[i]
      preprocessed_img = \
          np.ascontiguousarray(np.transpose(preprocessed_img, (2, 0, 1)))
      preprocessed_img = torch.from_numpy(preprocessed_img)
      preprocessed_img.unsqueeze_(0)
      input = preprocessed_img.requires_grad_(True)
      return input
  
  model = classifier
  grad_cam = GradCam(model=model, feature_module=model.features, target_layer_names=[&quot;2&quot;], use_cuda=True)
  
  img = cv2.imread('/content/drive/My Drive/pic.png', 1)
  img = np.float32(cv2.resize(img, (224, 224))) / 255
  input = preprocess_image(img)
  input = input[:, 0:1, :, :]
  
  target_index = None
  mask = grad_cam(input, target_index)
  show_cam_on_image(img, mask)
  </code></pre>
  <p>I get this error:</p>
  <pre><code>---------------------------------------------------------------------------
  RuntimeError                              Traceback (most recent call last)
  &lt;ipython-input-30-fe930a4e6b09&gt; in &lt;module&gt;()
      155 # Otherwise, targets the requested index.
      156 target_index = None
  --&gt; 157 mask = grad_cam(input, target_index)
      158 show_cam_on_image(img, mask)
  
  6 frames
  /usr/local/lib/python3.6/dist-packages/torch/nn/functional.py in linear(input, weight, bias)
     1674         ret = torch.addmm(bias, input, weight.t())
     1675     else:
  -&gt; 1676         output = input.matmul(weight.t())
     1677         if bias is not None:
     1678             output += bias
  
  RuntimeError: mat1 dim 1 must match mat2 dim 0
  </code></pre>
  <p>In case this is helpful, here is the output of <code>print(model.features)</code>:</p>
  <pre><code>Sequential(
    (0): Conv2d(1, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
    (1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
    (2): ReLU(inplace=True)
    (3): Conv2d(16, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
    (4): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
    (5): ReLU(inplace=True)
    (6): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (7): Conv2d(32, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
    (8): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
    (9): ReLU(inplace=True)
    (10): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
    (11): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
    (12): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
    (13): ReLU(inplace=True)
    (14): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
  )
  </code></pre>
  <p>How can I fix this error and make the grad-CAM run as expected?</p>