I am trying to train an autoencoder with PyTorch on 2D images containing 2D Gaussian densities such as this:

[![Gaussian 2d][1]][1]


The images are of size 100x100 (I feed them into the autoencoder as 1x10000 tensors).

I get **good results** with my current architecture for such images (nearly identical outputs). But when I try out densities with **very small standard deviation**, the autoencoder has problems with the reconstruction. Here is an example *input image*:

[![Sparse input][2]][2]

Using the same architecture as above and training only on those sparse images, I get *results* like this:

[![Reconstructed sparse image][3]][3]

The location is reconstructed well but **not the shape** (e.g. no peak in the middle).

And here is the evolution of the loss during training:

[![Loss evolution][4]][4]

According to this thread: https://stats.stackexchange.com/questions/397656/autoencoder-for-sparse-data it shouldn't be a problem that now the input is very sparse (most elements/pixels are zero). I already tried out different learning rates, batch_sizes and architectures but it didn't help.

My current architecture is a fully-connected autoencoder with hidden layer sizes as follows:

10.000 -> 1.024 -> 512 -> 256 -> 64 -> 256 -> 512 -> 1.024 -> 10.000

and ReLu activations in between. I am using MSE as the loss function.

Any ideas what could go wrong here?


  [1]: https://i.sstatic.net/2VPno.png
  [2]: https://i.sstatic.net/Zi1me.png
  [3]: https://i.sstatic.net/ZaRjy.png
  [4]: https://i.sstatic.net/WpnBt.png