Giter Site home page Giter Site logo

Comments (3)

jaanli avatar jaanli commented on May 28, 2024 1

You're right - the distribution for q(z) and p(z) have the same shape for a single datapoint.

p(z) does not need to have a batch size dimension, as the kl function supports broadcasting across the batch size dimension - so it's effectively as if every element in the batch has a p(z) of dimension latent_dim.

Hope this helps!

from variational-autoencoder.

jaanli avatar jaanli commented on May 28, 2024

Thanks!

I'm not sure I follow:

  • the kl divergence has an analytic form in this case (we do not use samples from p_z to compute it, so I don't see an issue with the shape)

  • p_z does not produce a 1D tensor, it produces a tensor of shape latent_dim

Am I missing something?

from variational-autoencoder.

lenhhoxung86 avatar lenhhoxung86 commented on May 28, 2024

Hi,
What I mean is that the ways to create q_z and p_z are different.
q_z = distributions.Normal(loc=q_mu, scale=q_sigma)
Here q_mu and q_sigma have the same shape of [batch_size, latent_dim], but it's not the case for p_z.

Here is an example:

>>> x = tf.distributions.Normal(loc=np.zeros(3, dtype=np.float32),scale=np.ones(3,dtype=np.float32))
>>> sess.run(x.sample())
array([ 1.4619417, -0.7553768,  2.2952332], dtype=float32)
>>> 
>>> y = tf.distributions.Normal(loc=np.zeros((2,3), dtype=np.float32),scale=np.ones((2,3),dtype=np.float32))
>>> sess.run(y.sample())
array([[ 0.73629814,  1.0238795 ,  0.00905563],
       [-1.0864298 , -1.0123701 ,  0.7973023 ]], dtype=float32)

Of course, we calculate the kl divergence based on the distributions x and y but I think the samples created by the two distributions should have the same shape, aren't they?

from variational-autoencoder.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.