How to use Gabor filters

In Nengo sometimes we represent connection weights in a factored form. For example, suppose you have N neurons in one ensemble and M neurons in the second ensemble. Instead of representing the connection weights between those layers with an NxM weight matrix, we can split it into an NxD and a DxM matrix (where D << M and N). This is much more efficient in terms of memory usage and communication bandwidth (we only need to communicate a D-dimensional signal between ensembles, rather than N), although you do sacrifice some representational power. Anyway, in those terms the NxD matrix is called the “decoders” and the DxM matrix is called the “encoders”. So you take the output of your first ensemble, multiply it by the decoders, then multiply that again by the encoders, and that is the input to your second ensemble.

Note that in practice we often insert another matrix in the middle, so the full story is that you have a NxD0 matrix, a D0xD1 matrix, and a D1xM matrix. The D0xD1 matrix is the transform parameter on a factored connection (ensemble->ensemble). As opposed to on a ensemble.neurons->ensemble.neurons connection, where the transform represents the full weight matrix.

You may also find this recent forum post helpful, for more discussion on the ideas surrounding this weight factoring New to Nengo & Confused about some concepts.

1 Like