예제 #1
0
    def __init__(self,
                 data_dim,
                 latent_dim,
                 encoder,
                 outer_transform,
                 inner_transform=None,
                 pie_epsilon=1.0e-2,
                 apply_context_to_outer=True):
        super(EncoderManifoldFlow, self).__init__()

        assert latent_dim < data_dim

        self.data_dim = data_dim
        self.latent_dim = latent_dim
        self.total_data_dim = product(data_dim)
        self.total_latent_dim = product(latent_dim)
        self.apply_context_to_outer = apply_context_to_outer

        self.manifold_latent_distribution = distributions.StandardNormal(
            (self.total_latent_dim, ))
        self.orthogonal_latent_distribution = distributions.RescaledNormal(
            (self.total_data_dim - self.total_latent_dim, ),
            std=pie_epsilon,
            clip=5.0 * pie_epsilon)
        self.projection = ProjectionSplit(self.total_data_dim,
                                          self.total_latent_dim)

        self.encoder = encoder
        self.outer_transform = outer_transform
        if inner_transform is None:
            self.inner_transform = transforms.IdentityTransform()
        else:
            self.inner_transform = inner_transform

        self._report_model_parameters()
예제 #2
0
    def __init__(self, data_dim, transform):
        super(Flow, self).__init__()

        self.data_dim = data_dim
        self.latent_dim = data_dim
        self.total_data_dim = product(data_dim)
        self.total_latent_dim = product(self.latent_dim)

        self.latent_distribution = distributions.StandardNormal(
            (self.total_latent_dim, ))
        self.transform = transform

        self._report_model_parameters()
예제 #3
0
    def __init__(self, data_dim, latent_dim, encoder, decoder, inner_transform=None, apply_context_to_outer=True):
        super(ProbabilisticAutoEncoder, self).__init__()

        self.data_dim = data_dim
        self.latent_dim = latent_dim
        self.total_data_dim = product(data_dim)
        self.total_latent_dim = product(latent_dim)
        self.apply_context_to_outer = apply_context_to_outer

        assert self.total_latent_dim < self.total_data_dim

        self.manifold_latent_distribution = distributions.StandardNormal((self.total_latent_dim,))

        self.encoder = encoder
        self.decoder = decoder
        if inner_transform is None:
            self.inner_transform = transforms.IdentityTransform()
        else:
            self.inner_transform = inner_transform

        self._report_model_parameters()