(deep learning) Is there a type of layer that can reverse the max-pooling operation? As far as I know, we have deconvolutional layer to reverse the convolutional layer. Is there something like that for max-pooling?
Also, I want to add this reverse max-pooling into an autoencoder, is there any existing example of it?
 A: As Zeiler says in his paper "Visualizing and Understanding Convolutional Networks" :
"In the convnet, the max pooling operation is non-invertible, however we can obtain an approximate inverse by recording the locations of the maxima within each pooling region in a set of switch variables."
Check up the Zeiler's paper in the Unpooling section.
A: Have you checked this paper Stacked Convolutional Auto-Encoders for Hierarchical Feature Extraction? 

Here we introduce a max-pooling layer that introduces sparsity over the hidden
  representation by erasing all non-maximal values in non overlapping subregions.

Basically it's the same as alviur's answer. Since they used only one max pooling layer, instead of actually doing the down-sampling for each box, they just erased all the non-maximal values, and the sparse representation is used for reconstruction. 
A: MaxPool is not generally invertible, but PyTorch for example provides a function which computes a pseudo-inverse, where all elements other than the max are set to 0:

MaxUnpool2d takes in as input the output of MaxPool2d including the indices of the maximal values and computes a partial inverse in which all non-maximal values are set to zero.

