这里是一个使用PyTorch在MNIST数据集上训练的自编码器:
我试图比较每张图像的低维表示。
打印每一层的维度:
for l in autoencoder.parameters() : print(l.shape)
显示:
torch.Size([512, 784])torch.Size([512])torch.Size([512])torch.Size([512])torch.Size([512])torch.Size([128, 512])torch.Size([128])torch.Size([128])torch.Size([128])torch.Size([128])torch.Size([512, 128])torch.Size([512])torch.Size([512])torch.Size([512])torch.Size([512])torch.Size([784, 512])torch.Size([784])
看起来维度信息并未存储在学习的向量中?
换句话说,如果我有10000张图像,每张包含100个像素,执行上述将维度降至10像素的自编码器,应该可以访问所有10000张图像的10像素维度表示?
回答:
我对PyTorch不太熟悉,但将自编码器分成编码器和解码器模型似乎可行(我将隐藏层的尺寸从512改为64,将编码图像的维度从128改为4,以使示例运行得更快):