MNIST autoencoder

Hey everyone!

I love to build small projects / proofs of concept to discover new ideas and architecture. These last few days, I have been playing with autoencoders so I build something using them. I trained a small autoencoder to compress and decompress MNIST digit. The size of the code is just 4 floats.

Here is a digit:

And the correcponding decoded image:

I’m already impressed about this result but let’s dig a bit more. I built another autoencoder coding images on 2 floats between -1 and 1. Now we can generate ‘new’ images by taking random point in this space and decoding them!

I also like this kind of picture a lot but I think we can have even more fun with this simple concept. During the past few years, I created a ton of fractals videos by changing a parameter by a small value at each time step. We can do the same with autoencoders!

Let’s build a third one which encodes images into 3 [-1, 1] floats. Now we can build a grid just like before that shows the result of modifying two of the parameters and we can make the third one vary over time. This is what we get:

Tell me if you have any more fun ideas!

4 Likes

Nice! Try this in 3D space. If you have just 3 [-1,1] numbers, you should be able to show how it varies in a continuous fashion. see https://www.tensorflow.org/get_started/embedding_viz for inspiration.