Super class for gradient-based interpretation methods. This class inherits from InterpretingMethod. It summarizes all implemented gradient-based methods and provides a private function to calculate the gradients w.r.t. to the input for given data. Implemented are:

'Vanilla Gradients' and 'Gradient x Input' (Gradient)

'SmoothGrad' and 'SmoothGrad x Input' (SmoothGrad)

`innsight::InterpretingMethod`

-> `GradientBased`

`times_input`

Multiplies the gradients with the input features. This method is called 'Gradient x Input'.

`new()`

Create a new instance of this class.

```
GradientBased$new(
converter,
data,
channels_first = TRUE,
output_idx = NULL,
ignore_last_act = TRUE,
times_input = TRUE,
dtype = "float"
)
```

`converter`

The converter of class Converter with the stored and torch-converted model.

`data`

The given data in an array-like format to be interpreted with the selected gradient-based method.

`channels_first`

The format of the given date, i.e. channels on last dimension (

`FALSE`

) or after the batch dimension (`TRUE`

). If the data has no channels, use the default value`TRUE`

.`output_idx`

This vector determines for which outputs the method will be applied. By default (

`NULL`

), all outputs (but limited to the first 10) are considered.`ignore_last_act`

Set this boolean value to include the last activation, or not (default:

`TRUE`

). In some cases, the last activation leads to a saturation problem.`times_input`

Multiplies the gradients with the input features. This method is called 'Gradient x Input'.

`dtype`

The data type for the calculations. Use either

`'float'`

for torch::torch_float or`'double'`

for torch::torch_double.

`plot()`

This method visualizes the result of the selected method in a
ggplot2::ggplot. You can use the argument `data_idx`

to select
the data points in the given data for the plot. In addition, the
individual output nodes for the plot can be selected with the argument
`output_idx`

. The different results for the selected data points and
outputs are visualized using the method ggplot2::facet_grid.
You can also use the `as_plotly`

argument to generate an interactive
plot based on the plot function plotly::plot_ly.

```
GradientBased$plot(
data_idx = 1,
output_idx = NULL,
aggr_channels = "sum",
as_plotly = FALSE
)
```

`data_idx`

An integer vector containing the numbers of the data points whose result is to be plotted, e.g.

`c(1,3)`

for the first and third data point in the given data. Default:`c(1)`

.`output_idx`

An integer vector containing the numbers of the output indices whose result is to be plotted, e.g.

`c(1,4)`

for the first and fourth model output. But this vector must be included in the vector`output_idx`

from the initialization, otherwise, no results were calculated for this output node and can not be plotted. By default (`NULL`

), the smallest index of all calculated output nodes is used.`aggr_channels`

Pass one of

`'norm'`

,`'sum'`

,`'mean'`

or a custom function to aggregate the channels, e.g. the maximum (base::max) or minimum (base::min) over the channels or only individual channels with`function(x) x[1]`

. By default (`'sum'`

), the sum of all channels is used.**Note:**This argument is used only for 2D and 3D inputs.`as_plotly`

This boolean value (default:

`FALSE`

) can be used to create an interactive plot based on the library`plotly`

. This function takes use of plotly::ggplotly, hence make sure that the suggested package`plotly`

is installed in your R session.**Advanced:**You can first output the results as a ggplot (`as_plotly = FALSE`

) and then make custom changes to the plot, e.g. other theme or other fill color. Then you can manually call the function`ggplotly`

to get an interactive plotly plot.

Returns either a ggplot2::ggplot (`as_plotly = FALSE`

) or a
plotly::plot_ly (`as_plotly = TRUE`

) with the plotted results.

`boxplot()`

This function visualizes the results of this method in a boxplot, where
the type of visualization depends on the input dimension of the data.
By default a ggplot2::ggplot is returned, but with the argument
`as_plotly`

an interactive plotly::plot_ly plot can be created,
which however requires a successful installation of the package
`plotly`

.

```
GradientBased$boxplot(
output_idx = NULL,
data_idx = "all",
ref_data_idx = NULL,
aggr_channels = "norm",
preprocess_FUN = abs,
as_plotly = FALSE,
individual_data_idx = NULL,
individual_max = 20
)
```

`output_idx`

An integer vector containing the numbers of the output indices whose result is to be plotted, e.g.

`c(1,4)`

for the first and fourth model output. But this vector must be included in the vector`output_idx`

from the initialization, otherwise, no results were calculated for this output node and can not be plotted. By default (`NULL`

), the smallest index of all calculated output nodes is used.`data_idx`

By default ("all"), all available data is used to calculate the boxplot information. However, this parameter can be used to select a subset of them by passing the indices. E.g. with

`data_idx = c(1:10, 25, 26)`

only the first`10`

data points and the 25th and 26th are used to calculate the boxplots.`ref_data_idx`

This integer number determines the index for the reference data point. In addition to the boxplots, it is displayed in red color and is used to compare an individual result with the summary statistics provided by the boxplot. With the default value (

`NULL`

) no individual data point is plotted. This index can be chosen with respect to all available data, even if only a subset is selected with argument`data_idx`

.**Note:**Because of the complexity of 3D inputs, this argument is used only for 1D and 2D inputs and disregarded for 3D inputs.`aggr_channels`

Pass one of

`'norm'`

,`'sum'`

,`'mean'`

or a custom function to aggregate the channels, e.g. the maximum (base::max) or minimum (base::min) over the channels or only individual channels with`function(x) x[1]`

. By default (`'norm'`

), the Euclidean norm of all channels is used.**Note:**This argument is used only for 2D and 3D inputs.`preprocess_FUN`

This function is applied to the method's result before calculating the boxplots. Since positive and negative values often cancel each other out, the absolute value (

`abs`

) is used by default. But you can also use the raw data (`identity`

) to see the results' orientation, the squared data (`function(x) x^2`

) to weight the outliers higher or any other function.`as_plotly`

This boolean value (default:

`FALSE`

) can be used to create an interactive plot based on the library`plotly`

instead of`ggplot2`

. Make sure that the suggested package`plotly`

is installed in your R session.`individual_data_idx`

Only relevant for a

`plotly`

plot with input dimension`1`

or`2`

! This integer vector of data indices determines the available data points in a dropdown menu, which are drawn in individually analogous to`ref_data_idx`

only for more data points. With the default value`NULL`

the first`individual_max`

data points are used.**Note:**If`ref_data_idx`

is specified, this data point will be added to those from`individual_data_idx`

in the dropdown menu.`individual_max`

Only relevant for a

`plotly`

plot with input dimension`1`

or`2`

! This integer determines the maximum number of individual data points in the dropdown menu without counting`ref_data_idx`

. This means that if`individual_data_idx`

has more than`individual_max`

indices, only the first`individual_max`

will be used. A too high number can significantly increase the runtime.

Returns either a ggplot2::ggplot (`as_plotly = FALSE`

) or a
plotly::plot_ly (`as_plotly = TRUE`

) with the boxplots.