in neuron_explainer/activations/derived_scalars/locations.py [0:0]
def __call__(self, layer_indices: list[LayerIndex]) -> list[LayerIndex | Literal["Dummy"]]:
def _dummy_if_invalid(
layer_index: LayerIndex, valid_indices: set[LayerIndex]
) -> LayerIndex | Literal["Dummy"]:
if layer_index in valid_indices:
return layer_index
else:
# this value represents the fact that the layer index is not needed for this computation
# callers are free to use a dummy tensor in place of the activations at this layer index,
# knowing that downstream DST calculations are intended to be independent of the activation
# tensor provided at this layer index
return "Dummy"
assert all(layer_index is not None for layer_index in layer_indices)
# source_layer_indices satisfy:
# target_layer_indices = layer_indices
# for target_layer_index, source_layer_index in zip(target_layer_indices, source_layer_indices):
# target_activations_by_layer_index[target_layer_index] = source_activations_by_layer_index[source_layer_index] # (or a dummy tensor, if the index is "Dummy")
source_layer_indices = [layer_index + self.layer_index_offset for layer_index in layer_indices] # type: ignore
# 'invalid' layer indices are those not in starting_layer_indices; starting_layer_indices mapped to unneeded layer indices are considered "Unneeded"
return [
_dummy_if_invalid(source_layer_index, set(layer_indices))
for source_layer_index in source_layer_indices
]