fishy.analysis.xai

Unified XAI module for deep learning model explanations using LIME and Grad-CAM.

Classes

class fishy.analysis.xai.ExplainerConfig(num_features: int = 5, num_samples: int = 100, output_dir: Path = PosixPath('outputs/xai'), device: str = 'cpu', random_seed: int = 42)[source]

Bases: object

Configuration for model explanation methods.

__init__(num_features: int = 5, num_samples: int = 100, output_dir: Path = PosixPath('outputs/xai'), device: str = 'cpu', random_seed: int = 42) None[source]
device: str = 'cpu'
num_features: int = 5
num_samples: int = 100
output_dir: Path = PosixPath('outputs/xai')
random_seed: int = 42
class fishy.analysis.xai.GradCAM(model: Module, target_layer: Module)[source]

Bases: object

1D Grad-CAM implementation for analyzing spectral data models.

__init__(model: Module, target_layer: Module) None[source]
generate_cam(input_tensor: Tensor, target_class: int | None = None)[source]
remove_hooks()[source]
save_activation(module, input, output)[source]
save_gradient(module, grad_input, grad_output)[source]
class fishy.analysis.xai.ModelWrapper(model: Any, device: str)[source]

Bases: object

Wrapper for models to make them compatible with LIME (handles both Torch and Sklearn).

__init__(model: Any, device: str) None[source]
normalize_intensities(x: ndarray) ndarray[source]
predict_proba(x: ndarray) ndarray[source]

Functions

fishy.analysis.xai.run_gradcam_analysis(model, data_loader, device, output_dir, target_layer=None, ctx=None)[source]
fishy.analysis.xai.run_lime_explanation(dataset_name, model, data_module, explainer_config, instance_name, target_label, ctx)[source]

s