Example #1
0
def test_diagonal_gaussian_prior_initialize_parameters():
    """
    DiagonalGaussianPrior.initialize_parameters works without crashing
    """
    prior = DiagonalGaussianPrior()
    vae = DummyVAE()
    prior.set_vae(vae)
    prior.initialize_parameters(nhid=5)
Example #2
0
def test_convolutional_compatible():
    """
    VAE allows convolutional encoding networks
    """
    encoding_model = MLP(
        layers=[
            SpaceConverter(
                layer_name='conv2d_converter',
                output_space=Conv2DSpace(shape=[4, 4], num_channels=1)
            ),
            ConvRectifiedLinear(
                layer_name='h',
                output_channels=2,
                kernel_shape=[2, 2],
                kernel_stride=[1, 1],
                pool_shape=[1, 1],
                pool_stride=[1, 1],
                pool_type='max',
                irange=0.01)
            ]
    )
    decoding_model = MLP(layers=[Linear(layer_name='h', dim=16, irange=0.01)])
    prior = DiagonalGaussianPrior()
    conditional = BernoulliVector(mlp=decoding_model, name='conditional')
    posterior = DiagonalGaussian(mlp=encoding_model, name='posterior')
    vae = VAE(nvis=16, prior=prior, conditional=conditional,
              posterior=posterior, nhid=16)
    X = T.matrix('X')
    lower_bound = vae.log_likelihood_lower_bound(X, num_samples=10)
    f = theano.function(inputs=[X], outputs=lower_bound)
    rng = make_np_rng(default_seed=11223)
    f(as_floatX(rng.uniform(size=(10, 16))))
Example #3
0
def test_diagonal_gaussian_prior_sample_from_p_z():
    """
    DiagonalGaussianPrior.sample_from_p_z works without crashing
    """
    prior = DiagonalGaussianPrior()
    vae = DummyVAE()
    prior.set_vae(vae)
    prior.initialize_parameters(nhid=5)
    prior.sample_from_p_z(10)
Example #4
0
def test_diagonal_gaussian_prior_log_p_z():
    """
    DiagonalGaussianPrior.log_p_z works without crashing
    """
    prior = DiagonalGaussianPrior()
    vae = DummyVAE()
    prior.set_vae(vae)
    prior.initialize_parameters(nhid=5)
    z = T.tensor3('z')
    prior.log_p_z(z)
Example #5
0
def test_diagonal_gaussian_prior_log_p_z():
    """
    DiagonalGaussianPrior.log_p_z works without crashing
    """
    prior = DiagonalGaussianPrior()
    vae = DummyVAE()
    prior.set_vae(vae)
    prior.initialize_parameters(nhid=5)
    z = T.tensor3("z")
    prior.log_p_z(z)
Example #6
0
def test_vae_automatically_finds_kl_integrator():
    """
    VAE automatically finds the right KLIntegrator
    """
    encoding_model = MLP(layers=[Linear(layer_name='h', dim=10, irange=0.01)])
    decoding_model = MLP(layers=[Linear(layer_name='h', dim=10, irange=0.01)])
    prior = DiagonalGaussianPrior()
    conditional = BernoulliVector(mlp=decoding_model, name='conditional')
    posterior = DiagonalGaussian(mlp=encoding_model, name='posterior')
    vae = VAE(nvis=10, prior=prior, conditional=conditional,
              posterior=posterior, nhid=5)
    assert (vae.kl_integrator is not None and
            isinstance(vae.kl_integrator, DiagonalGaussianPriorPosteriorKL))
Example #7
0
def test_multiple_samples_allowed():
    """
    VAE allows multiple samples per data point
    """
    encoding_model = MLP(layers=[Linear(layer_name='h', dim=10, irange=0.01)])
    decoding_model = MLP(layers=[Linear(layer_name='h', dim=10, irange=0.01)])
    prior = DiagonalGaussianPrior()
    conditional = BernoulliVector(mlp=decoding_model, name='conditional')
    posterior = DiagonalGaussian(mlp=encoding_model, name='posterior')
    vae = VAE(nvis=10, prior=prior, conditional=conditional,
              posterior=posterior, nhid=5)
    X = T.matrix('X')
    lower_bound = vae.log_likelihood_lower_bound(X, num_samples=10)
    f = theano.function(inputs=[X], outputs=lower_bound)
    rng = make_np_rng(default_seed=11223)
    f(as_floatX(rng.uniform(size=(10, 10))))