tdhook.attribution#

Module for attribution methods.

Submodules#

Classes#

LRP

Different LRP rules such as LRP-0, LRP-epsilon z-plus [3], flat [4], gamma [5, 6], w-square [7] and its conditional variant [1].

Saliency

Gradient attribution [8] and its gradient-times-input variation [9].

GradCAM

Grad-CAM [10].

GuidedBackpropagation

Guided backpropagation [11].

IntegratedGradients

Integrated gradients [12] and its conditional variant [13].

Package Contents#

class tdhook.attribution.LRP(use_inputs=True, use_outputs=True, input_modules=None, target_modules=None, init_attr_targets=None, init_attr_inputs=None, init_attr_cache_in=None, init_attr_grads=None, additional_init_keys=None, output_grad_callbacks=None, attribution_key='attr', clean_intermediate_keys=True, cache_callback=None, rule_mapper=None, warn_on_missing_rule=True, skip_modules=None)[source]#

Bases: tdhook.attribution.gradient_helpers.GradientAttribution

Different LRP rules such as LRP-0, LRP-epsilon z-plus [3], flat [4], gamma [5, 6], w-square [7] and its conditional variant [1].

Parameters:
  • use_inputs (bool)

  • use_outputs (bool)

  • input_modules (Optional[List[str]])

  • target_modules (Optional[List[str]])

  • init_attr_targets (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • init_attr_inputs (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • init_attr_cache_in (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • init_attr_grads (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • additional_init_keys (Optional[List[tdhook._types.UnraveledKey]])

  • output_grad_callbacks (Optional[Dict[str, Callable]])

  • attribution_key (tdhook._types.UnraveledKey)

  • clean_intermediate_keys (bool)

  • cache_callback (Optional[Callable])

  • rule_mapper (Callable[[str, torch.nn.Module], tdhook.attribution.lrp_helpers.rules.Rule | None] | None)

  • warn_on_missing_rule (bool)

  • skip_modules (Optional[Callable[[str, torch.nn.Module], bool]])

_rule_mapper#
_warn_on_missing_rule = True#
_skip_modules = None#
_prepare_module(module, in_keys, out_keys, extra_relative_path)[source]#
Parameters:
Return type:

tensordict.nn.TensorDictModuleBase

_restore_module(module, in_keys, out_keys, extra_relative_path)[source]#
Parameters:
Return type:

tensordict.nn.TensorDictModuleBase

_grad_attr(grads, inputs)[source]#
Parameters:
  • grads (tensordict.TensorDict)

  • inputs (tensordict.TensorDict)

Return type:

tensordict.TensorDict

static default_skip(name, module)[source]#
Parameters:
  • name (str)

  • module (torch.nn.Module)

Return type:

bool

class tdhook.attribution.Saliency(use_inputs=True, use_outputs=True, input_modules=None, target_modules=None, init_attr_targets=None, init_attr_inputs=None, init_attr_cache_in=None, init_attr_grads=None, additional_init_keys=None, output_grad_callbacks=None, attribution_key='attr', clean_intermediate_keys=True, cache_callback=None, absolute=False, multiply_by_inputs=False)[source]#

Bases: tdhook.attribution.gradient_helpers.GradientAttribution

Gradient attribution [8] and its gradient-times-input variation [9].

Parameters:
  • use_inputs (bool)

  • use_outputs (bool)

  • input_modules (Optional[List[str]])

  • target_modules (Optional[List[str]])

  • init_attr_targets (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • init_attr_inputs (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • init_attr_cache_in (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • init_attr_grads (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • additional_init_keys (Optional[List[tdhook._types.UnraveledKey]])

  • output_grad_callbacks (Optional[Dict[str, Callable]])

  • attribution_key (tdhook._types.UnraveledKey)

  • clean_intermediate_keys (bool)

  • cache_callback (Optional[Callable])

  • absolute (bool)

  • multiply_by_inputs (bool)

_absolute = False#
_multiply_by_inputs = False#
_grad_attr(grads, inputs)[source]#
Parameters:
  • grads (tensordict.TensorDict)

  • inputs (tensordict.TensorDict)

class tdhook.attribution.GradCAM(modules_to_attribute, use_inputs=True, use_outputs=True, input_modules=None, target_modules=None, init_attr_targets=None, init_attr_inputs=None, init_attr_cache_in=None, init_attr_grads=None, additional_init_keys=None, output_grad_callbacks=None, attribution_key='attr', clean_intermediate_keys=True, cache_callback=None, absolute=False)[source]#

Bases: tdhook.attribution.gradient_helpers.GradientAttribution

Grad-CAM [10].

Parameters:
  • modules_to_attribute (Optional[Dict[str, DimsConfig]])

  • use_inputs (bool)

  • use_outputs (bool)

  • input_modules (Optional[List[str]])

  • target_modules (Optional[List[str]])

  • init_attr_targets (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • init_attr_inputs (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • init_attr_cache_in (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • init_attr_grads (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • additional_init_keys (Optional[List[tdhook._types.UnraveledKey]])

  • output_grad_callbacks (Optional[Dict[str, Callable]])

  • attribution_key (tdhook._types.UnraveledKey)

  • clean_intermediate_keys (bool)

  • cache_callback (Optional[Callable])

  • absolute (bool)

_absolute = False#
_modules_to_attribute#
_grad_attr(grads, inputs)[source]#
Parameters:
  • grads (tensordict.TensorDict)

  • inputs (tensordict.TensorDict)

Return type:

tensordict.TensorDict

class tdhook.attribution.GuidedBackpropagation(use_inputs=True, use_outputs=True, input_modules=None, target_modules=None, init_attr_targets=None, init_attr_inputs=None, init_attr_cache_in=None, init_attr_grads=None, additional_init_keys=None, output_grad_callbacks=None, attribution_key='attr', clean_intermediate_keys=True, cache_callback=None, multiply_by_inputs=False, classes_to_skip=())[source]#

Bases: tdhook.attribution.gradient_helpers.GradientAttribution

Guided backpropagation [11].

Parameters:
  • use_inputs (bool)

  • use_outputs (bool)

  • input_modules (Optional[List[str]])

  • target_modules (Optional[List[str]])

  • init_attr_targets (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • init_attr_inputs (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • init_attr_cache_in (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • init_attr_grads (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • additional_init_keys (Optional[List[tdhook._types.UnraveledKey]])

  • output_grad_callbacks (Optional[Dict[str, Callable]])

  • attribution_key (tdhook._types.UnraveledKey)

  • clean_intermediate_keys (bool)

  • cache_callback (Optional[Callable])

  • multiply_by_inputs (bool)

  • classes_to_skip (Tuple[Type[torch.nn.Module], Ellipsis])

_hook_manager#
_multiply_by_inputs = False#
_hook_module(module)[source]#
Parameters:

module (tdhook.modules.HookedModule)

Return type:

tdhook.hooks.MultiHookHandle

_grad_attr(grads, inputs)[source]#
Parameters:
  • grads (tensordict.TensorDict)

  • inputs (tensordict.TensorDict)

class tdhook.attribution.IntegratedGradients(use_inputs=True, use_outputs=True, input_modules=None, target_modules=None, init_attr_targets=None, init_attr_inputs=None, init_attr_cache_in=None, init_attr_grads=None, additional_init_keys=None, output_grad_callbacks=None, attribution_key='attr', clean_intermediate_keys=True, cache_callback=None, compute_convergence_delta=False, baseline_key='baseline', multiply_by_inputs=False, method='gausslegendre', n_steps=50)[source]#

Bases: tdhook.attribution.gradient_helpers.GradientAttributionWithBaseline

Integrated gradients [12] and its conditional variant [13].

Parameters:
  • use_inputs (bool)

  • use_outputs (bool)

  • input_modules (Optional[List[str]])

  • target_modules (Optional[List[str]])

  • init_attr_targets (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • init_attr_inputs (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • init_attr_cache_in (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • init_attr_grads (Optional[Callable[[tensordict.TensorDict, tensordict.TensorDict], tensordict.TensorDict]])

  • additional_init_keys (Optional[List[tdhook._types.UnraveledKey]])

  • output_grad_callbacks (Optional[Dict[str, Callable]])

  • attribution_key (tdhook._types.UnraveledKey)

  • clean_intermediate_keys (bool)

  • cache_callback (Optional[Callable])

  • compute_convergence_delta (bool)

  • baseline_key (tdhook._types.UnraveledKey)

  • multiply_by_inputs (bool)

  • method (str)

  • n_steps (int)

_method = 'gausslegendre'#
_n_steps = 50#
_step_sizes#
_alphas#
_reduce_baselines_fn(td, in_keys)[source]#
Parameters:
Return type:

tensordict.TensorDict

_grad_attr(grads, inputs)[source]#
Parameters:
  • grads (tensordict.TensorDict)

  • inputs (tensordict.TensorDict)

Return type:

tensordict.TensorDict

static init_attr_targets_with_labels(outputs, additional_init_tensors, selected_out_keys, label_key='label')[source]#
Parameters:
Return type:

tensordict.TensorDict