Autoencoders encode an input to a lower dimensional representation in a hidden layer (or latent code) and then decoding to an output of the same dimension as the input. In doing so, the autoencoder learns the salient features of the input.