text: Title: `SemanticSegmentationTarget` throws tensor device casting error
  Body: ## Bug
  
  The following code
  
  ```python
  targets = [
      SemanticSegmentationTarget(2, np.ones((128, 128), dtype=np.float32))
  ]
  
  with GradCAM(model=m, target_layers=l, reshape_transform=reshape_transform) as cam:
      mask = cam(input_tensor=timg, targets=targets)
  
  ```
  
  throws a RuntimeError
  
  ```
  RuntimeError: Expected all tensors to be on the same device, but found at least two devices, mps:0 and cpu!
  ```
  
  ## Full Stack Trace
  
  ```
  {
  	"name": "RuntimeError",
  	"message": "Expected all tensors to be on the same device, but found at least two devices, mps:0 and cpu!",
  	"stack": "---------------------------------------------------------------------------
  RuntimeError                              Traceback (most recent call last)
  Cell In[5], line 30
       24 targets = [
       25     SemanticSegmentationTarget(2, np.ones((128, 128), dtype=np.float32))
       26     # SemanticSegmentationTarget(10, np.ones((128, 128), dtype=np.float32))
       27 ]
       29 with GradCAM(model=m, target_layers=l, reshape_transform=reshape_transform) as cam:
  ---> 30     mask = cam(
       31         input_tensor=timg,
       32         targets=targets)
       34     pt.imshow(show_on_image(img, mask[0]))
  
  File ~/.pyenv/versions/3.12.3/lib/python3.12/site-packages/pytorch_grad_cam/base_cam.py:186, in BaseCAM.__call__(self, input_tensor, targets, aug_smooth, eigen_smooth)
      183 if aug_smooth is True:
      184     return self.forward_augmentation_smoothing(input_tensor, targets, eigen_smooth)
  --> 186 return self.forward(input_tensor, targets, eigen_smooth)
  
  File ~/.pyenv/versions/3.12.3/lib/python3.12/site-packages/pytorch_grad_cam/base_cam.py:98, in BaseCAM.forward(self, input_tensor, targets, eigen_smooth)
       96 if self.uses_gradients:
       97     self.model.zero_grad()
  ---> 98     loss = sum([target(output) for target, output in zip(targets, outputs)])
       99     loss.backward(retain_graph=True)
      101 # In most of the saliency attribution papers, the saliency is
      102 # computed with a single target layer.
      103 # Commonly it is the last convolutional layer.
     (...)
      108 # use all conv layers for example, all Batchnorm layers,
      109 # or something else.
  
  File ~/.pyenv/versions/3.12.3/lib/python3.12/site-packages/pytorch_grad_cam/utils/model_targets.py:68, in SemanticSegmentationTarget.__call__(self, model_output)
       67 def __call__(self, model_output):
  ---> 68     return (model_output[self.category, :, :] * self.mask).sum()
       69     return (model_output[self.category, :, :] * self.mask.to(model_output.device)).sum()
  
  RuntimeError: Expected all tensors to be on the same device, but found at least two devices, mps:0 and cpu!"
  }
  ```
  
  ## Version
  grad-cam==1.5.4
  
  on **Python 3.12.3**
  