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
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.