5. Variational Autoencoder - SummerBigData/Iceberg GitHub Wiki

The idea of a Variational autoencoder is to simplify an image down to just a z_mean vector and a z_log_variance vector. This is then sampled into a gaussian distribution (a set of 2-d coordinates called z) and those are passed to the decoder, which expands the set of coordinates back to the original image shape. The code I used to write my code is here.

The network used was the following:

By applying the simple NN model in the link, with one hidden layer in both the encoder and decoder, I got this plot of the z_mean vectors. The yellow dots are icebergs and the purple dots are ships. Overall, this plot tells us that the simple neural network method used isn't enough for the autoencoder to distinguish the ships from icebergs or make any groups at all.

Next, I added more dense layers in both the encoder and decoder and also added the unlabeled test data. These are colored turquoise.

Finally, I tried using a complex convolutional encoder and a deconvolutional decoder