12.8.5 Activity-based Receptive Fields

The UnitActRFStat computes an effective receptive field for units based on their activation values when inputs are presented. The idea is to present a wide range of inputs to the network while performing a weighted average over these input patterns as a function of the unit's activation for each. When you do this averaging, all the things that the unit does not care about wash out, leaving an image of those things that reliably activate the unit. Assuming that the inputs span a large enough space and provide for sufficient averaging, the resulting receptive field can be much more informative than just looking at the weights, since it takes into account any network dynamics, etc., and can be computed on units any number of layers removed from the inputs. Finally, the "input" that you average over need not literally be the input layer to the network -- it could be the output, or an intermediate hidden layer (or all of these at once).

This stat requires a stable database for accumulating the averaged receptive fields -- an Environment is used for this purpose. Note that you have to do an InitRFVals in order to initialize this environment before you start collecting the stats.

This stat has the following parameters:

layer
Set this to point to the units that you want to record the receptive fields for.
rf_layers
This contains the layer(s) that you want to perform the averaging over (the input in the above description).
data_env
This points to the Environment that contains the resulting receptive fields, with one Event per unit.