考虑高斯解码器用于变分自动编码器

时间:2018-11-11 19:06:24

标签: tensorflow autoencoder

我正在尝试为真实数据实现变体自动编码器,其中编码器和解码器均通过多元高斯模型进行建模。对于编码器是高斯而解码器是伯努利的情况,我在网上找到了几种实现方式,但对于高斯解码器的情况却没有。对于Bernoulli解码器,重建损失可以定义如下

reconstr_loss = tf.nn.sigmoid_cross_entropy_with_logits(labels=x,logits=x_out_logit)

其中x_out_logit由DNN建模。我不确定如何为高斯案例写出重建损失。我假设解码器也应该输出均值(gz_mean)和方差(gz_log_sigma_sq)(类似于高斯编码器),并且由于重建损失是高斯概率,因此我将其定义为

mvn = tf.contrib.distributions.MultivariateNormalDiag(loc=self.gz_mean,scale_diag=tf.sqrt(tf.exp(self.gz_log_sigma_sq)))
reconstr_loss = tf.log(1e-20+mvn.prob(self.x))

但是,这种损失似乎不起作用,无论采取什么培训步骤,mvn.prob(self.x)始终为零。请让我知道考虑这种情况的任何想法或任何git-hub来源。

0 个答案:

没有答案