Autoencoder for cleaning outliers in a surface
A possible approach would be a denoising autoencoder. It is like a normal autoencoder but instead of training it using the same input and output, you inject noise on the input while keeping the expected output clean. Hence, the autoencoder learns to remove it. This kind of autoencoders are also described in the blog post you linked to.

In your case, you could just train your denoising autoencoder injecting to the inputs spikes of the height you expect to be removed. 

About what kind of architecture (e.g. fully connected, convolutional), only actual tests can tell you what is appropriate and what is not.