Package: netlens
Welcome to Netlens!Library containing attribution and interpretation methods for deep nets.InstallationThese installation instructions assume that you have conda installed and added to your path.Create a virtual environment (or modify an existing one).conda create -n "<my_name>" python=3.7  # Skip if using existing environment.
conda activate <my_name>Install dependencies.conda install tensorflow-gpu=1  # Or whatever backend you're using.
conda install keras             # Or whatever backend you're using.
conda install matplotlib        # For visualizations.
conda install scikit-learn      # To get LFW dataset.Install the netlens repopip install netlensOverviewBackendsThenetlenslibrary supports several common machine learning libraries, including Keras, Pytorch, and TensorFlow.In order to set the backend to the backend of your choice, use theNETLENS_BACKENDflag, e.g., to use the Keras backend, the following code could be used before NetLens imports:importosos.environ['NETLENS_BACKEND']='keras'AttributionsModel WrappersIn order to support a wide variety of backends with different interfaces for their respective models, NetLens uses its ownModelclass which provides a general model interface to simplify the implementation of the API functions.
A model wrapper class exists for backend's model that converts a model in the respective backend's format to the general NetLensModelinterface.
The wrappers are found in themodelsmodule, and any model defined using Keras, Pytorch, or Tensorflow should be wrapped with the appropriate wrapper before being used with the other API functions that require a model --all other NetLens functionalities expect models to be an instance ofnetlens.models.Model.For example,wrapped_model=KerasModel(model_defined_via_keras)Attribution MethodsAttribution methods, in the most general sense, allow us to quantify the contribution of particular variables in a model towards a particular behavior of the model.
In many cases, for example, this may simply measure the effect each input variable has on the output of the network.Attribution methods extend theAttributionMethodclass, and many concrete instances are found in theattributionmodule.Once an attribution method has been instantiated, its main function is itsattributionsmethod, which takes annp.Arrayof batched instances, where each instance matches the shape of theinputto the model the attribution method was instantiated with.See themethod comparisondemo for further information on the different types of attribution methods, their uses, and their relationships with one another.Slices, Quantities, and DistributionsIn order to obtain a high degree of flexibility in the types of attributions that can be produced, we implementInternal Influence, which is parameterized by aslice,quantity of interest, anddistribution of interest, explained below.Thesliceessentially defines a layer to use for internal attributions.
The slice for theInternalInfluencemethod can be specified by an instance of theSliceclass in theslicesmodule.
ASliceobject specifies two layers: (1) the layer of the variables that we are calculating attributionfor(e.g., the input layer), and (2) the layer whose output defines ourquantity of interest(e.g., the output layer, see below for more on quantities of interest).Thequantity of interest(QoI) essentially defines the model behavior we would like to explain using attributions.
The QoI is a function of the model's output at some layer.
For example, it may select the confidence score for a particular class.
In its most general form, the QoI can be pecified by an implementation of theQoIclass in thequantitiesmodule.
Several common default implementations are provided in this module as well.Thedistribution of interest(DoI) essentially specifies for which points surrounding each instance the calculated attribution should be valid.
The distribution can be specified via an implementation of theDoIclass in thedistributionsmodule, which is a function taking an input instance and producing a list of input points to aggregate attribution over.
A few common default distributions implementing theDoIclass can be found in thedistributionsmodule.See theparameterization demofor further explanations of the purpose of these parameters and examples of their usage.VisualizationsIn order to interpret the attributions produced by anAttributionMethod, a few useful visualizers are provided in thevisualizationsmodule.
While the interface of each visualizer varies slightly, in general, the visualizers are a function taking annp.Arrayrepresenting the attributions returned from anAttributionMethodand producing an image that can be used to interpret the attributions.