ethix commited on
Commit
f920f48
·
1 Parent(s): 155fe98

Fix GradCAM target layer reference for transformers ViT model

Browse files
Files changed (1) hide show
  1. xai_engine/methods.py +3 -2
xai_engine/methods.py CHANGED
@@ -67,8 +67,9 @@ def integrated_gradients(wrapper, input_tensor, steps=20) -> tuple[np.ndarray, f
67
 
68
  def vit_grad_cam(wrapper, input_tensor, target_layer_idx=11) -> np.ndarray:
69
  """GradCAM for ViT using pytorch_grad_cam with custom reshape transform."""
70
- # Target layer: last encoder layer output
71
- target_layer = [wrapper.model.vit.encoder.layer[target_layer_idx].output]
 
72
 
73
  def reshape_transform(tensor):
74
  # tensor shape: (B, 577, 384) -> drop CLS token -> (B, 576, 384) -> (B, 24, 24, 384) -> (B, 384, 24, 24)
 
67
 
68
  def vit_grad_cam(wrapper, input_tensor, target_layer_idx=11) -> np.ndarray:
69
  """GradCAM for ViT using pytorch_grad_cam with custom reshape transform."""
70
+ layer = wrapper.model.vit.encoder.layer[target_layer_idx]
71
+ target_layer = [layer.output if hasattr(layer, "output") else layer]
72
+
73
 
74
  def reshape_transform(tensor):
75
  # tensor shape: (B, 577, 384) -> drop CLS token -> (B, 576, 384) -> (B, 24, 24, 384) -> (B, 384, 24, 24)