在显示 VAE 潜在空间时,我们可以看到什么?
数据挖掘
机器学习
自动编码器
vae
2022-02-13 22:16:43
1个回答
当人们制作二维散点图时,他们实际绘制的是什么?
第一种情况:当我们想要获得特定输入的嵌入时:
我们要么
将手写字符“9”输入 VAE,接收 20 维“均值”向量,然后使用 t-SNE 将其嵌入到 2D 维中,最后用标签“9”或点旁边的实际图像绘制它,或者
我们使用 2D 平均向量并直接绘制而不使用 t-SNE。
请注意,“方差”向量不用于嵌入。但是,它的大小可以用来显示不确定性的程度。例如,一个清晰的“9”将比一个接近“0”的仓促写出的“9”具有更少的差异。
第二种情况:当我们想要绘制z 空间的随机样本时:
我们选择 z 的随机值,这有效地绕过了均值和方差向量的抽样,
sample = Variable(torch.randn(64, ZDIMS))然后,我们将这些 z 提供给解码器,并接收图像,
sample = model.decode(sample).cpu()最后,我们使用 t-SNE 将 z 嵌入到 2D 维度中,或者使用 z 的 2D 维度并直接绘图。
这是第二种情况的插图(由唯一的油漆绘制):
如您所见,均值和方差被完全绕过,我们直接将随机 z 提供给解码器。
引用的文章说了同样的话,但不太明显:
下面你会看到我用下面的例子制作的 MNIST 数字的二维潜在空间的 64 个随机样本,ZDIMS=2
和
VAE 学习了任何输入数字的 20 维正态分布
ZDIMS = 20
...
self.fc21 = nn.Linear(400, ZDIMS) # mu layer
self.fc22 = nn.Linear(400, ZDIMS) # logvariance layer
这意味着它仅指 z 向量,绕过均值和方差向量。
