I have been looking at autoencoders from the keras blog here: https://blog.keras.io/building-autoencoders-in-keras.html

I was wondering, what motifications would be necessary in order to be able to give it different surfaces i.e. 2-dimensional vectors, of which some of them have large spikes.

For example here we see a surface that looks clean:

enter image description here

How could a neural network look like, if I wanted to remove individual spikes from this surface?

Am I right in thinking that a normal fully connected feed forward propagation would be sufficient? If so, is there any way to control thresholds when spikes are should be eliminated?

Also, would you agree that the training principle would still be the same as show in the keras blog? Would it work if I simply trained it with many good examples of clean surfaces to recognize themselves?


1 Answer 1


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.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.