Search code examples
pythonneural-networkkerasautoencoder

Beta Variational AutoEncoders


I have followed the variational autoencoders part in this tutorial. My first task in my project is to regenerate some vectors which represent how the grid layout is divided. So , I created my own dataset which contains at least 5000 rows of vectors of dimensions (1,36). Those vectors represent a 6 by 6 grid layouts. So I used some of the dataset as training set for my model which is the variational autoencoders. Then, since my project task requires that I use Disentangled VAE or Beta-VAE, I read some articles about this kind of VAE and figured that you just need to change the beta value.

So the code that I used is in this github link.

First, according to what I have read on the internet, when the beta value is superior to 1, we will have better construction results which is exactly the opposite of what I have found in my model.

Second, I have changed many hyperparameters in my model like the beta, the batch_size, number of epochs, the standard variation of the sampling vector but still I don't get a nice reconstruction of the data. I guess I am missing something in understanding this model but I couldn't figure what is it. Did I understand the beta-variational autoencoders right by writing this code ?


Solution

  • The Beta term is for the KL term which is acting upon the prior and your variational approximation, the higher it is, the worse will be the reconstruction. So what you found makes sense.