Search code examples
tensorflowmachine-learningcomputer-visionautoencoderloss-function

Loss function variational Autoencoder in Tensorflow example


I have a question regarding the loss function in variational autoencoder. I followed the tensorflow example https://www.tensorflow.org/tutorials/generative/cvae to create a LSTM-VAE, for sampling a sinus function.

My encoder-input is a set of points (x_i,sin(x_i)) for a specific range (randomly sampled), and as output of the decoder I expect similar values.

In the tensorflow guide, there is cross-entropy used to compare the encoder input with the decoder output.

cross_ent = tf.nn.sigmoid_cross_entropy_with_logits(logits=x_logit, labels=x)

This makes sense, because the input and output are treated as probabilities. But in reality these probabily functions represent the sets of my sinus function.

Can't I simply use a mean-squared-error instead of the cross-entropy (I tried it and it works well) or causes this a wrong behaviour of the architecture at some point?

Best regards and thanks for your help!


Solution

  • Well, such questions happen when you work too much and stop thinking properly. For the sake of solving this, it makes sense to think about what I'm trying to do.

    p(x|z) is the decoder reconstruction, what means, that by sampling from z the value x is generated with the probability of p. In the tensorflow-example image-classification/generation is used, in that case crossentropy makes sense. I simply want to minimize the distance between my input and output. The use of mse is kind of logical.

    Hope that helps someone at some point.

    Regards.