为什么要展平卷积 VAE 中的最后一个编码器层?

Why flatten last encoder layer in a convolutional VAE?

我是深度学习游戏的新手,我想知道为什么我们要在 VAE 中展平编码器的最后一层,然后将展平的输出提供给线性层,然后线性层近似位置和比例参数对于先前?我们不能直接拆分卷积层的输出并从这里直接获取位置和比例,还是卷积捕获的空间信息会弄乱比例和位置?

非常感谢!

为什么我们要在 VAE 中展平编码器的最后一层?

除了方便打印或报告之外,没有什么好的理由。如果就在展平之前,编码器的形状为 [BatchSize,2,2,32] ,将其展平为 [BatchSize,128] 就可以方便地列出每个样本的所有 128 个编码值。当解码器将其重新整形为 [BatchSize,2,2,32] 时,所有空间信息都将放回原来的位置。没有空间信息丢失。

当然,可以决定使用经过训练的 VAE 的编码器作为图像特征提取器。当我们有很多未标记的图像来训练 VAE,但只有少数标记图像时,这实际上非常有用。在大型未标记图像集上训练 VAE 后,编码器有效地变成了特征提取器。然后我们可以将特征提取器送入一个密集层,该层的目的是学习标签。在这种情况下,让编码器输出扁平数据集非常有用。