The layer between the encoder and decoder, ie. the code is also known as Bottleneck. This is a well-designed approach to decide which aspects of observed data are relevant information and what aspects can be discarded.
It does this by balancing two criteria :
* Compactness of representation, measured as the compressibility.
* It retains some behaviourally relevant variables from the input.