首页 > 解决方案 > 如何在 VAE 中选择潜在变量先验的正确分布?

问题描述

我想问一下如何确定 VAE 中潜在变量的正确先验。最重要的是,我很好奇在选择正确分布时要考虑的关键点(可能是数据结构、模型结构等),尤其是在彩色(3 通道)数据集上。我想继续讨论一个可以轻松回答问题的小场景。

场景:首先,如果我有,例如,数据集中具有 [3, 27, 27] 维度的 8 位图像的实例。而且,实例值介于 [0., 1.) 之间。此外,如果我将其放入由卷积编码器和解码器构建的 VAE 设置中。编码器和解码器可以有这样的结构设计;

# Simple Conv Encoder
self.encoder = nn.Sequential(
    nn.Conv2d(self.input_channels, 36, 4, 1, 0),
    nn.LeakyReLU(0.2),
    nn.MaxPool2d(2, 2),
    nn.Conv2d(36, 48, 3, 1, 0),
    nn.LeakyReLU(0.2),
    nn.MaxPool2d(2, 2),
    nn.Conv2d(48, 32, 3, 1, 0)
)
# Simple Conv Decoder
self.decoder = nn.Sequential(
    nn.ConvTranspose2d(16, 36, 3, 1, 0),
    nn.ReLU(),
    nn.Upsample(scale_factor=2),
    nn.ConvTranspose2d(36, 48, 3, 1, 0),
    nn.ReLU(),
    nn.Upsample(scale_factor=2),
    nn.ConvTranspose2d(48, 100, 4, 1, 0),
    nn.Sigmoid()
)

由于 ReLU 对神经元意味着 max{0, input},

  1. 我想知道什么样的事先采摘是正确的选择?
  2. 此外,将逻辑类型损失的离散混合与这种类型的架构相一致吗?
  3. 更重要的是,sigmoid 能满足这种损失的需要吗?除了我提到的之外,还可以应用哪些额外的损失?

我想把它保留在一个场景中,因为所有这些理论考虑都让我大吃一惊,让我陷入了困境:(

提前致谢!

标签: deep-learningpytorchconv-neural-networkautoencoder

解决方案


推荐阅读